2011-11-16 9 views
2

私は新しいWindowsデスクトップを作成し、それに切り替えて数秒待ってから元のデスクトップに戻す小さなプログラムを書いています。私は新しいデスクトップを作成して元に戻すことはできません。私はC#でWin32 APIを使用しており、DLLをインポートしています。私はGetDesktopWindow()が元のデスクトップへのハンドルを取得すると思ったが、それは私のためには機能しません。C#とwin32 API。 2台のデスクトップを切り替えます。どのように元のデスクトップに戻るには?

ここに私が働くことを試みているコードスニペットがあります。

public IntPtr createDesktop(string name) 
    { 
     return CreateDesktop(name, IntPtr.Zero, IntPtr.Zero, 0, (long)DESKTOP_ACCESS_MASK.GENERIC_ALL, IntPtr.Zero); 
    } 

    public IntPtr getCurrentDesktop() 
    { 
     return GetDesktopWindow(); 
    } 

    public void switchDesktop(IntPtr desktop) 
    { 
     SwitchDesktop(desktop); 
    } 

    main() 
    { 
     IntPtr newDesktop = createDesktop("Test"); 
     IntPtr oldDesktop = getCurrentDesktop(); 
     switchDesktop(newDesktop); 
     switchDesktop(oldDesktop); 
    } 

答えて

4

デスクトップウィンドウは、デスクトップの背景を作成するウィンドウです。それはデスクトップ自体と同じではありません。 getCurrentDesktop()を変更して、デスクトップ上のウィンドウではなく、デスクトップ自体のハンドルを取得する必要があります(ただし、特別なウィンドウです)。

GetThreadDesktop()を使用して、新しいデスクトップに切り替える前に現在のデスクトップを取得できると思います。

+0

ありがとう、それはそれを解決しました。 :) – user1049697

関連する問題