我决定再拍一次,所以我试验了你的代码并添加了遗漏的内容:一个非常多的选项.
删除装饰came from here的关键.虽然它有效,但你最终会发现裸体的应用程序可能会在它之后显示一些错误.
请享用:
#include "windows.h" #include <iostream> #include <string> #include <sstream> #include <algorithm> #include <limits> using namespace std; #ifdef min #undef min #endif int main(int argc,char* argv[]) { char** param = argv; unsigned int x = numeric_limits<int>::min(),y=numeric_limits<int>::min(),w=numeric_limits<int>::min(),h=numeric_limits<int>::min(); HWND z = HWND_NOTOPMOST; unsigned int flags = (SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER); ++param; wstring winTitle; bool close = false; bool naked = false; while (*param) { string sparam(*param); if (sparam == "-title") { ++param; if (!*param) break; sparam = *param; winTitle.resize(sparam.size()); copy(sparam.begin(),sparam.end(),winTitle.begin()); } else if (sparam == "-move") { ++param; if (!*param) break; sparam =*param; stringstream sstr(sparam); char sep; sstr >> x >>sep >> y; if (x != numeric_limits<int>::min() && y != numeric_limits<int>::min()) { flags &= ~SWP_NOMOVE; } } else if (sparam == "-resize") { ++param; if (!*param) break; sparam = *param; stringstream sstr(sparam); char sep; sstr >> w >>sep >> h; if (h != numeric_limits<int>::min() && w != numeric_limits<int>::min() ) { flags &= ~SWP_NOSIZE; } } else if (sparam == "-top") { z = HWND_TOP; flags &= ~SWP_NOZORDER; } else if (sparam == "-staytop") { z = HWND_TOPMOST; flags &= ~SWP_NOZORDER; } else if (sparam == "-bottom") { z = HWND_BOTTOM; flags &= ~SWP_NOZORDER; } else if (sparam == "-hide") { flags |= SWP_HIDEWINDOW; } else if (sparam == "-close") { close = true; } else if (sparam == "-naked") { naked = true; } ++param; } if (winTitle.empty()) { return -1; } HWND win_handle = FindWindow(0,winTitle.c_str()); if (win_handle != 0) { if (close) { TerminateProcess( (HANDLE )GetProcessId( win_handle ),0); return 0; } SetWindowPos( win_handle,z,x,y,w,h,flags ); if (naked) { SetWindowLong(win_handle,GWL_STYLE,GetWindowLong(win_handle,GWL_EXSTYLE) | WS_EX_TOPMOST); ShowWindow(win_handle,SW_SHOW); } } else { cout << "!!! FindWindow Failed" << endl; } return 0; }