Datei auf einem anderen Rechner öffnen



  • Hallo,
    ich will auf einem anderen Rechner ein Verzeichnis auswählen können. Hier im Forum habe ich diesen Code gefunden, um ein Verzeichnis auf MEINEM Rechner auswählen zu können:

    BROWSEINFO bi = { 0 };
    bi.lpszTitle = _T("Wählen Sie bitte das Verzeichnis aus :"); 
    LPITEMIDLIST pidl = SHBrowseForFolder (&bi); 
    if (pidl != 0) 
    { 
       TCHAR path[MAX_PATH]; 
       if (SHGetPathFromIDList(pidl, path)) 
       { 
    	   AfxMessageBox(path); 
       } 
    
       IMalloc * imalloc = 0; 
       if (SUCCEEDED(SHGetMalloc(&imalloc))) 
      { 
    	imalloc->Free (pidl); 
    	imalloc->Release(); 
      } 
    }
    

    Das klappt auch fein, allerdings will ich auf einen anderen Rechner. Die IP habe ich. Mit dem CFileDialog kann ich so Dateien auf einem anderen Rechner öffnen:

    CFileDialog Browser(true,"zip",0,NULL,"*.zip",this);
    CString Path;
    
    Path = "\\\\";
    Path += GetIPAddress();
    Path += "\\c$";
    
    Browser.m_ofn.lpstrInitialDir = Path;
    Browser.DoModal();
    

    Aber wie komme ich mit BROWSEINFO auf einen anderen Rechner? Da gibt es den Wert pIDLRoot, aber wie setze ich den richtig? In jedem Sample wird der auf NULL gesetzt 😞

    Bis denne Mail,
    OnkelHotte



  • welchen anderen Rechner meinst du denn *g*



  • Einen bei mir im Netzwerk halt... Will hier nix auspionieren 🙄 😃



  • So, ich hab im Netz eine Funktion gefunden, die einen char* in einen pidl umwandelt:

    LPITEMIDLIST ConvertPathToLpItemIdList(const char *pszPath)
    {
    	LPITEMIDLIST  pidl;
    	LPSHELLFOLDER pDesktopFolder;
    	OLECHAR       olePath[MAX_PATH];
    	ULONG         chEaten;
    	ULONG         dwAttributes;
    	HRESULT       hr;
    
    	if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
    	{
    		MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszPath, -1, olePath, MAX_PATH);
    		hr = pDesktopFolder->ParseDisplayName(NULL, NULL, olePath, &chEaten, &pidl, &dwAttributes);
    		pDesktopFolder->Release();
    	}
    	return pidl;
    }
    

    Danach einfach

    bi.pidlroot = ConvertPathToLpItemIdList (Pfad);
    

    angeben und schon lüppt das 🙂


Anmelden zum Antworten