2017-04-14 12 views
0

ウィンドウを終了しようとしています。私は3番目にDestroyWindow()SendMessage()でWM_CLOSEを、そしてCloseWindow()では最初の2つは機能せず、CloseWindow()を返します。それを最小化するだけです!私は何をしようとしているの終了してウィンドウを最小化しないでください。

例コード:だから、基本的に窓はなく、プロセス 例のシナリオ閉じ

int main() 
{ 
    HWND curwind; 
    char ccurwind[256]; 
    HWND newwind; 
    HWND wind2; 
    Sleep(1000); 
    printf("Destroying in 5...\n"); 
    Sleep(1000); 
    printf("Destroying in 4...\n"); 
    Sleep(1000); 
    printf("Destroying in 3...\n"); 
    Sleep(1000); 
    printf("Destroying in 2...\n"); 
    Sleep(1000); 
    printf("Destroying in 1...\n"); 
    curwind = GetForegroundWindow(); 
    GetWindowTextA(curwind, ccurwind, 256); 
    //DestroyWindow(curwind); 
    if (DestroyWindow(curwind) == 0) { 
     printf("Failed with error: %s", GetLastError()); 
    } 
    else { 
     printf("\nDestroyed %s", ccurwind); 
    } 
    getch(); 
    return 0; 
} 

:新しいウィンドウでこのプログラムを 私はGoogleで新しいタブを開くになりますそのウィンドウを閉じますが、プロセス全体は閉じません。これは可能なのですか?もしそうなら、私はどのような機能を使用しますか?

+0

私は混乱しています。プログラムがウィンドウを開かない - 作成しなかったウィンドウをどのように破壊することができると思いますか? – duskwuff

+0

私はそれが作成したウィンドウを閉じることを望んでいません(それはウィンドウを作成しなかったので)私はそれが別のプログラムのウィンドウを閉じることを望みます。私のプログラムはGoogleウィンドウを閉じます – Jimmmmmy

+0

'DWORD WINAPI GetLastError(void);'は文字列ポインタを返しますが、エラーコードは返しません。 –

答えて

1

ウィンドウを所有するスレッドのみがDestroyWindowを呼び出すことができます。 SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0)は、システムメニューでウィンドウを閉じるのと同じですが、最終的にはWM_CLOSEを送信します。

ウィンドウはWM_CLOSEを無視することができ、それについてはあまりできません。

ウィンドウがあなたより高い完全性レベルのプロセスにある場合、UIPIはメッセージをブロックします。

0

関数:DestroyWindow()はジョブを実行する必要があります。

から: 'https://msdn.microsoft.com/en-us/library/windows/desktop/ms632682(v=vs.85).aspx'

指定されたウィンドウを破棄します。この関数はWM_DESTROYおよびWM_NCDESTROYメッセージをウィンドウに送信して無効化し、キーボードフォーカスをそのウィンドウから削除します。この関数は、ウィンドウのメニューを破棄し、スレッドメッセージキューをフラッシュし、タイマーを破棄し、クリップボードの所有権を削除し、クリップボードビューアチェーンを破棄します(ウィンドウがビューアチェーンの先頭にある場合)。

指定されたウィンドウが親ウィンドウまたは所有者ウィンドウの場合、DestroyWindowは親ウィンドウまたは所有者ウィンドウを破棄すると、関連する子ウィンドウまたは所有ウィンドウを自動的に破棄します。この関数は、子ウィンドウまたは所有ウィンドウを最初に破棄し、親ウィンドウまたは所有者ウィンドウを破棄します。

DestroyWindowは、CreateDialog関数で作成されたモードレスダイアログボックスも破棄します。

関連する問題