WNetDisconnectDialog funktioniert nicht



  • Ich habe das Problem, dass WNetDisconnectDialog nicht funktioniert. Es erscheint kein Dialog, der Rückgabewert der Funktion ist 0.

    Hier mein Code:

    #include <Windows.h>
    #include <Winnetwk.h>
    #pragma comment(lib,"Mpr.lib")
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {
    
    	WNetDisconnectDialog(GetForegroundWindow(),RESOURCETYPE_DISK);	
    }
    

    Dann habe ich es mit dynamischen Laden versucht:

    #include <Windows.h>
    //#include <Winnetwk.h>
    //#pragma comment(lib,"Mpr.lib")
    
    typedef DWORD (*WNetDisconnectDialogDT) (HWND hwnd,DWORD dwType);
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {
    	HMODULE Lib=LoadLibrary(L"Mpr.dll");
    	WNetDisconnectDialogDT WNetDisconnectDialogM=(WNetDisconnectDialogDT)GetProcAddress(Lib,"WNetDisconnectDialog");
    	WNetDisconnectDialogM(GetForegroundWindow(),RESOURCETYPE_DISK);
    	FreeLibrary(Lib);
    	//WNetDisconnectDialog(GetForegroundWindow(),RESOURCETYPE_DISK);	
    }
    

    Dann tritt beim Debuggen der Fehler "Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."* auf. Wenn ich zweimal mit Weiter bestätige erscheint der Dialog dann.

    Wenn ich rundll32.exe Mpr.dll,WNetDisconnectDialog aufrufe, erscheint der Dialog auch nicht. Genauso wenig wenn ich die Funktionsdefinition beim dynamischen Laden von *typedef DWORD (WNetDisconnectDialogDT) (HWND hwnd,DWORD dwType); in *typedef DWORD (WINAPI WNetDisconnectDialogDT) (HWND hwnd,DWORD dwType); ändere. Dann erscheint der Dialog nämlich wieder gar nicht.

    Ich benutze Visual C++ 2008 Express Edition unter Windows 7 Service Pack 1.

    Was kann ich tun, damit ein Dialog angezeigt wird?

    norbertwill



  • Es funktioniert jetzt, die Anwendung, die WNetDisconnectDialog aufruft, muss ein Fenster haben oder auf anderem Wege weiterlaufen, sonst wird der Dialog nicht weiter angezeigt.

    norbertwill


Anmelden zum Antworten