get を実行するとGetWindowPlacement
、 はWINDOWPLACEMENT::showCmd
常に 1 のように見えますが、これはSW_SHOWNORMAL
です。
なぜこれがそうなのか、更新されているのか誰か知っていますか? この変数がアプリケーション自体によって維持されているのか、それともオペレーティング システムによって維持されているのか、誰にもわかりませんか?
これをWindows 7で実行しています。
このスレッドに記載されているのと同じ目的を達成するためにこれを使用しています。非表示のウィンドウをメモリに保存せずに以前に表示された非表示のウィンドウを元に戻そうとしています (非表示/表示は別の実行セッションで呼び出されます) またはディスク。
void hide(const unsigned int pid){
std::list<HWND> windowList = getWindowbyPID(pid);
for(std::list<HWND>::iterator it = windowList.begin(); it != windowList.end(); it++){
if(IsWindowVisible(*it)){ std::cout << "Hid WIN#" << *it << std::endl; ShowWindow(*it,SW_HIDE); }
}
}
void show(const unsigned int pid){
std::list<HWND> windowList = getWindowbyPID(pid);
for(std::list<HWND>::iterator it = windowList.begin(); it != windowList.end(); it++){
//if(IsWindowVisible(*it)){ ShowWindow(*it,SW_SHOW); }
WINDOWPLACEMENT wp;
wp.length = sizeof(wp);
wp.showCmd = 0; // Just to clear showCmd before reading.
std::cout << *it << std::endl;
std::cout << "BEFORE: " << wp.showCmd << std::endl;
GetWindowPlacement(*it,&wp);
std::cout << "AFTER: " << wp.showCmd << std::endl;
}
}
非表示にした後に実行した 1 つの例 (notepad.exe の pid) の出力hwnd#00060CD0
:
003D0642
BEFORE: 0
AFTER: 1
000B0682
BEFORE: 0
AFTER: 1
00060CD0
BEFORE: 0
AFTER: 1
GetWindowPlacement
常に非表示になっているウィンドウと以前に表示されていたウィンドウを区別するために使用しようとしています。常に非表示になっているウィンドウでも、0 になることはないようです。