Win32 ターミナルサービスセッションのデスクトップにメッセージボックスを表示する
ターミナルサービスセッションのデスクトップにメッセージボックスを表示するには、WTSSendMessage関数を使う。
BOOL WTSSendMessage( HANDLE hServer, //ターミナルサーバーのハンドル DWORD SessionId, //セッションID LPTSTR pTitle, //タイトル DWORD TitleLength, //タイトルの長さ(バイト数) LPTSTR pMessage, //メッセージ DWORD MessageLength, //メッセージの長さ(バイト数) DWORD Style, //メッセージボックスのスタイル DWORD Timeout, //タイムアウト(bWaitがTRUEのときのみ有効) DWORD *pResponse, //ユーザーの応答 BOOL bWait //TRUEを指定すると、ユーザーが応答するかタイムアウトになるまで制御を戻さない );
#include <windows.h> #include <stdio.h> #include <wtsapi32.h> #pragma comment(lib, "wtsapi32.lib") int main() { DWORD dwResponse; DWORD dwSessionId = 1; TCHAR szTitle[] = TEXT("Title"); TCHAR szMessage[] = TEXT("Message"); //bWaitがFALSEなので、ブロッキング状態にはならず、すぐに制御が返る WTSSendMessage( WTS_CURRENT_SERVER_HANDLE, dwSessionId, szTitle, sizeof(szTitle), szMessage, sizeof(szMessage), MB_OK , 0, &dwResponse, FALSE); return 0; }
#include <windows.h> #include <stdio.h> #include <wtsapi32.h> #pragma comment(lib, "wtsapi32.lib") int main() { DWORD dwResponse; BOOL bRet; DWORD dwSessionId = 1; TCHAR szTitle[] = TEXT("Title"); TCHAR szMessage[] = TEXT("Message"); //bWaitがTRUE、TimeoutがINFINITEなのでユーザーが応答するまで制御が返らない bRet = WTSSendMessage( WTS_CURRENT_SERVER_HANDLE, dwSessionId, szTitle, sizeof(szTitle), szMessage, sizeof(szMessage), MB_YESNOCANCEL, INFINITE, &dwResponse, TRUE); switch (dwResponse) { case IDYES: puts("IDYES"); break; case IDNO: puts("IDNO"); break; case IDCANCEL: puts("IDCANCEL"); break; default: break; } return 0; }
#include <windows.h> #include <stdio.h> #include <wtsapi32.h> #pragma comment(lib, "wtsapi32.lib") int main() { HANDLE hServer; DWORD dwResponse; BOOL bRet; DWORD dwSessionId = 1; TCHAR szTitle[] = TEXT("Title"); TCHAR szMessage[] = TEXT("Message"); TCHAR szNetBiosName[] = TEXT("リモートPCのNETBIOS名");//リモートPCのNETBIOS名を指定する hServer = WTSOpenServer(szNetBiosName); if (hServer == NULL) { return 1; } bRet = WTSSendMessage( hServer, dwSessionId, szTitle, sizeof(szTitle), szMessage, sizeof(szMessage), MB_YESNOCANCEL, INFINITE, &dwResponse, TRUE); switch (dwResponse) { case IDYES: puts("IDYES"); break; case IDNO: puts("IDNO"); break; case IDCANCEL: puts("IDCANCEL"); break; default: break; } WTSCloseServer(hServer); return 0; }
http://msdn.microsoft.com/ja-jp/library/cc429631.aspx