アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下にソースを張ります。
#include <stdio.h>
#include <windows.h>


BOOL CALLBACK EnumWindowProc(HWND hwnd, LPARAM lp) {
static bool is_first = true;
DWORD style = ::GetWindowLong(hwnd, GWL_STYLE);
DWORD dwPID;
if ( ::IsWindow(hwnd) && ::IsWindowVisible(hwnd) && (style&WS_CAPTION) && !(style&WS_POPUP) ) {
char buf[65536];
::GetWindowText(hwnd, buf, 65535);
GetWindowThreadProcessId( hwnd, &dwPID );
if ( buf[0] != '\0' ) {
if ( is_first )
is_first = false;
else
//printf("%c\n", 1);
printf("%s%d\n", buf,hwnd);
}
}
return TRUE;
}

int main (void){
::EnumWindows(EnumWindowProc, 0);

HWND hWnd;
printf("プロセスIDを入力:\n");
scanf("%d",&hWnd);

if( hWnd != NULL ){
printf( "終了します。-- pause --\n" );
getchar();
PostMessage( hWnd, WM_CLOSE, 0, 0 );
}else{
printf( "起動してないウインドウズです。\n" );
}
return 0;
}

これですとたとえばメモ帳を編集していたときに WM_CLOSE メッセージを送ったときに「変更を保存しますか?」のようなダイアログが出る
アプリがあります。これをダイアログが出ずに強制終了するには
どうしたらよいでしょか?よろしくお願いします。

A 回答 (1件)

WM_DESTROYをポストすると消えます(消えないのもあるが)。


当たり前ですが、異常な終了方法です。
一般的には反則なのでやむをえない場合のみ使用してください。

この回答への補足

解答ありがとうございます。WM_DESTROYは知っていたんですが
ご承知の通りやむをえない場合のみ使うものだと調べました。
またほかにもあるということはわかったんですがそれもやはり
異常な終了方法ということまでしかわかりませんでした。
やはりダイアログを何とかしなくてはならないのでしょうか?

補足日時:2008/01/15 18:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!