winapi – 在MS Windows(XP)上使用来自不同进程的窗口句柄进行窗
发布时间:2020-12-13 20:32:33 所属栏目:Windows 来源:网络整理
导读:是否有可能使用其他进程的窗口进行某些操作?我想做的是: – 删除窗户装饰 – 将窗口移动到屏幕的任何位置 -let窗口保持在顶部而不是模态 指向命令行工具,脚本或C/C++代码段的链接非常棒. 非常感谢你! 我决定再拍一次,所以我试验了你的代码并添加了遗漏的
是否有可能使用其他进程的窗口进行某些操作?我想做的是:
– 删除窗户装饰 – 将窗口移动到屏幕的任何位置 -let窗口保持在顶部而不是模态 指向命令行工具,脚本或C/C++代码段的链接非常棒. 非常感谢你!
我决定再拍一次,所以我试验了你的代码并添加了遗漏的内容:一个非常多的选项.
删除装饰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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – 在dcpromo / forceremoval之后无法
- windows-server-2012-r2 – 在哪里可以找到Microsoft产品的
- 如何使用Get-Service命令提取Windows服务的物理路径
- windows-server-2012 – Solidworks:此虚拟环境不支持激活
- 解决:IIS的:DCOM?遇到错误“重叠?I/O?操作在进行中&n
- Appcelerator钛,我该如何创建模态窗口?
- 适用于Windows的Apple软件更新服务器
- Windows批处理中嵌套循环中的“continue”等效命令
- windows – timeBeginPeriod API是否会影响系统时钟?
- 无法加载DLL’xmogrt’:来自Tridion元数据查询
推荐文章
站长推荐
- windows-server-2012 – 在RDP会话中禁用Metro:
- Microsoft iSCSI Software Target可以通过物理磁
- Windows上的Python 2.6:如何使用“shell = True
- 本地化 – Windows运行时:如何获取用户首选语言
- active-directory – 降级DC的问题,仍然在目录中
- 目录和权限
- windows – 仅为进程初始化一次Critical Section
- active-directory – 计算机名称是否保证在域中是
- Window api-ms-win-crt-runtime-l1-1-0.dll丢失
- Window丢失api-ms-win-crt-runtime-l1-1-0.dll
热点阅读