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