首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Eureka的技术时光轴

    锁屏的一个有趣的问题:HWND_TOP 与 HWND_TOPMOST 漫谈

    想想,因为我们设置了主窗口为 HWND_TOP(也就是 z-order 上的最顶层窗口),而我们通过新建窗口,将主窗口的 z-order 向后移动了一位,也就是说此时最顶层窗口已经不是主窗口,而是新建的窗口了 很简单: 首先设置新建窗口的 z-order 为 HWND_TOPMOST(也就是所有非顶层窗口的最上面) ::SetWindowPos(newWindowHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 1 然后再设置主窗口的 z-order 为 HWND_TOP(也就是最顶层窗口) ::SetWindowPos(mainHWnd , HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); 1 通过测试,修改后就没有问题了。

    2K50发布于 2020-05-21
  • 来自专栏walterlv - 吕毅的博客

    System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“System.InvalidOperationException:“寄宿 HWND 必须是子窗口。””。 HandleRef(this, _source.Handle); } protected override void DestroyWindowCore(HandleRef hwnd Dispose(); } } } 寄宿 HWND 必须是子窗口 当运行此代码的时候,会提示错误: System.InvalidOperationException:“寄宿 HWND 或者英文版: System.InvalidOperationException:”Hosted HWND must be a child window.” 必须是指定父级的子窗口 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/hosted-hwnd-must-be-a-child-window.html ,以避免陈旧错误知识的误导

    90220编辑于 2023-10-22
  • 来自专栏walterlv - 吕毅的博客

    System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“寄宿的 HWND 必须是指定父级的子窗口。”。 这是很典型的 Win32 错误,本文介绍如何修复此错误。 问题 你有可能在调试嵌入窗口代码的时候遇到错误: System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。” 英文是: Hosted HWND must be a child window of the specified parent. 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/hosted-hwnd-must-be-a-child-window-of-the-specified-parent.html

    92930编辑于 2023-10-22
  • 来自专栏全栈程序员必看

    FindWindow使用方法_find do

    hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd ! hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd ! hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd ! hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd ! = NULL) { //HWND hButton = FindWindowEx(hwnd,NULL,"Button","刷新(&R)"); HWND hEdit =::GetDlgItem(hwnd

    88330编辑于 2022-09-21
  • 来自专栏全栈程序员必看

    python获取窗口句柄

    import win32gui class Hwnd(): def get_hwnd_dic(self, hwnd, hwnd_title): if (win32gui.IsWindow (hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible (hwnd) and win32gui.GetWindowText(hwnd)): hwnd_title[f"{hwnd}"] = win32gui.GetWindowText (hwnd) def get_hwnd(self): ''' :return: {hwnd:title} ''' hwnd_title = { } win32gui.EnumWindows(self.get_hwnd_dic, hwnd_title) return hwnd_title hwnd = Hwnd() print(hwnd.get_hwnd

    2.5K30编辑于 2022-09-16
  • 来自专栏全栈程序员必看

    python获取软件窗口句柄_python获取窗口句柄并将指定应用置顶

    def get_all_hwnd(hwnd, mouse):if(win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible (hwnd)): AC_cycle_uefi.hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)}) def set_KVM_window_top ():try: win32gui.EnumWindows(AC_cycle_uefi.get_all_hwnd,0) handle=”” for h, t inAC_cycle_uefi.hwnd_title.items (hwnd) # # win32gui.SetActiveWindow(hwnd) # win32gui.SetForegroundWindow(hwnd) win32gui.SetWindowPos( hwnd, win32con.HWND_TOPMOST,0, 0, 0, 0, win32con.SWP_NOMOVE| win32con.SWP_NOACTIVATE | win32con.SWP_NOOWNERZORDER

    2.9K30编辑于 2022-09-16
  • 来自专栏包子的书架

    MFC中句柄、指针、ID之间的关联

    pWnd->Attach(hWnd); //Attaches a Windows window to a CWnd object 从指针到句柄 HWND hWnd=pWnd->GetSafeHandle (); hWnd=pWnd->m_hWnd; SDK编程中窗体ID。 句柄,指针三者相互转换函数 ID--HANDLE--HWND三者之间的互相转换 id->句柄-----------hWnd = ::GetDlgItem(hParentWnd,id); id->指针 FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) 2 HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter 然后获得其指针 HANDLE hWnd; GetDlgItem(IDC_xxx,&hWnd); CWnd * pWnd = FromHandle(hWnd); 获得程序窗体指针的办法 (1)获得主框架窗体指针

    2.4K40发布于 2020-06-17
  • 来自专栏python3

    python 获取句柄,关闭进程

    print (s) global MAIN_HWND MAIN_HWND = hwnd return None , starttxt) return MAIN_HWND def winfun(hwnd, lparam): s = win32gui.GetWindowText(hwnd) = win32ui.FindWindow(None,main_app) # win32gui.CloseWindow(hwnd1) print(hwnd1) hwnd ) if hwnd < 1: hwnd = find_main_window(main_app) print(type(hwnd)) hwnd, 0) # win32gui.HideCaret(hwnd) #win32api.OpenProces main()

    3.2K20发布于 2020-01-10
  • 来自专栏xingoo, 一个梦想做发明家的程序员

    使用计时器-方法2

    第二种方法 是 自己让 windows把计时器消息发送给程序中的另一个窗口过程 回调函数: VOID CALLBACK TimerProc(HWND hwnd,UINT message,UINT iTimerID ,DWORD dwTimer) { .... } 第一种方式调用的SetTImer函数,第四个参数一般直接为NULL SetTimer(hwnd,iTimerID,iMsecInterval ,NULL); 第二种方式调用的SetTimer函数,第四个参数要设定为回调函数地址 SetTimer(hwnd,iTimerID,iMsecInterval,TimerProc); 函数代码如下: / return DefWindowProc (hwnd, message, wParam, lParam) ; } VOID CALLBACK TimerProc (HWND hwnd, UINT fFlipFlop ; GetClientRect (hwnd, &rc) ; hdc = GetDC (hwnd) ; hBrush = CreateSolidBrush

    86590发布于 2018-01-17
  • 来自专栏rikka

    Python 实现窗口保持置顶

    hWnd,HWND hWndInsertAfter,int X,int Y,int cx, int cy, UINT uFlags); 用于设置窗口的 Z 序号 参数解释如下: hwnd: 被修改的窗口的句柄 hWndlnsertAfter: 用于标识 Z 顺序, 可设为以下值: HWND_BOTTOM: 值为 1, 置底 HWND_NOTOPMOST: 值为 -2, 置于非置顶窗口之上 HWND_TOP : 值为 0, 置顶 HWND_TOPMOST: 值为 -1, 置顶 (在HWND_TOP之上) X, Y, cx,cy 确定了新窗口的位置和宽高 uFlags: 窗口尺寸和定位的标识, 部分值如下: (hwnd)) def cancel_focus(self, hwnd): win32gui.SetWindowPos(hwnd, win32con.HWND_NOTOPMOST , win32gui.GetWindowText(hwnd)) def handler(self, op, hwnd): op(hwnd) def get_key(self

    5.1K11编辑于 2022-01-19
  • C/C++ 遍历窗口标题类名

    , *LPEnumHWndsArg; // 判断窗口是否属于目标进程 BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam){ EnumHWndsArg hwnd, LPARAM lParam) { if (hwnd == NULL) { return FALSE; } BOOL ret; RECT rect ret) { printf("GetWindowRect hwnd=%p -> fail(%ld)\n", hwnd, GetLastError()); } else { //printf("GetWindowRect hwnd = %p -> rect=(left=%ld, top=%ld, right=%ld, bottom=%ld)\n", hwnd WINUSERAPI int WINAPI GetClassNameW( _In_ HWND hWnd, _Out_writes_to_(

    1.7K20编辑于 2022-12-28
  • 来自专栏xingoo, 一个梦想做发明家的程序员

    windows程序设计-第四章 system2.c 新增滚动条功能

    新添加的滚动条功能,首先就是要在createWindow的时候,修改参数风格模式 hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics , SB_VERT, 0, NUMLINES - 1,FALSE) ; SetScrollPos (hwnd, SB_VERT, iVscrollPos, TRUE) ; 添加WM_SIZE消息, = GetScrollPos (hwnd, SB_VERT)) { SetScrollPos (hwnd, SB_VERT, iVscrollPos, , iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { = GetScrollPos (hwnd, SB_VERT)) { SetScrollPos (hwnd, SB_VERT, iVscrollPos,

    83590发布于 2018-01-17
  • 来自专栏全栈程序员必看

    WIN32 API —— 最简单的Windows窗口封装类[通俗易懂]

    hWnd; // 对外只读,确保安全 HINSTANCE hInstance; public: // 返回窗口对象句柄 HWND GetHandle(); // 消息处理 需要后续默认处理则需要返回0;停止该消息后续处理,则返回1 virtual int HandleMessage(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); private: // 原始窗口过程 static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM = hWnd; // 在此处获取HWND,此时CreateWindow()尚未返回。 CreateWindow() { HWND hwnd = malloc(..); 初始化窗口对象; WndProc(hwnd, WM_CRATE, ..); // 此时已经创建了窗口

    3.2K20编辑于 2022-09-16
  • 来自专栏程序员互动联盟

    【Windows编程】创建基本控件

    LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND 创建标签/静态文本 CreateWindow(TEXT("STATIC"), TEXT("Test String"), WS_CHILD|WS_VISIBLE, 10, 10, 80, 20, hWnd NULL); 创建button CreateWindow(TEXT("BUTTON"), TEXT("Click Me"), WS_CHILD|WS_VISIBLE, 10, 40, 80, 20, hWnd hWnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW hWnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hCtrl; switch (message) { case

    2.6K70发布于 2018-03-13
  • 来自专栏跟Qt君学编程

    Windows系统API笔记

    设置窗口的Z序层级 BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int X, int Y, 检查窗口是否有效 BOOL IsWindow( HWND hWnd ) 5. 检查窗口是否显示 BOOL IsWindowVisible( HWND hWnd ) 6. 检查窗口是否允许接受键盘或鼠标输入 BOOL IsWindowEnabled( HWND hWnd ) 7. 获取被激活的前台窗口的句柄 HWND GetForegroundWindow() 9. 获取父窗口句柄 HWND GetParent( HWND hWnd ); 10. 检查窗口是否最大化 BOOL IsZoomed( HWND hWnd ); 14. 检查窗口是否最小化 BOOL IsIconic( HWND hWnd );

    76430编辑于 2023-03-17
  • 来自专栏DearXuan的博客文章

    使用C++实现的仿Wallpaper动态壁纸软件(含源文件)

    GetBackground(){ HWND background = NULL; HWND hwnd = FindWindowA("progman","Program Manager" ); HWND worker = NULL; do{ worker = FindWindowExA(NULL,worker,"workerW",NULL); ,所以只要 //遍历所有workW类型的窗体,逐一比较它的父窗体是不是Program Manager就可以找到背景窗体 HWND hwnd = FindWindowA("progman" , "Program Manager"); HWND worker = NULL; do { worker = FindWindowExA(NULL, worker, " file.isEmpty()){ if(firstPlay){ HWND hwnd = (HWND) videoWidget.winId();

    1.9K10编辑于 2022-01-19
  • 来自专栏ccf19881030的博客

    我的第一个DirectX程序界面及三角形的绘制

    hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, / (),NULL,wndclass.hInstance,NULL); if (SUCCEEDED(InitD3D(hwnd))) { //Show Window ShowWindow(hwnd ,NULL); return 0; } return DefWindowProc(hwnd,uMsg,wParam,lParam); } HRESULT InitD3D(HWND hwnd) //Show Window ShowWindow(hwnd,SW_SHOWDEFAULT); UpdateWindow(hwnd); MSG msg; while (GetMessage ,NULL); return 0; } return DefWindowProc(hwnd,uMsg,wParam,lParam); } HRESULT InitD3D(HWND hwnd)

    1.1K20发布于 2019-04-23
  • 来自专栏liulun

    windows api学习笔记-使用定时器

    #include <windows.h> #include "resource.h" #include <string> LRESULT CALLBACK MainWndProc(HWND,UINT, hwnd = ::CreateWindowEx( 0,//扩展样式 szClassName,//类名 "My First Window",//窗口名。 (hwnd);//刷新窗口 MSG msg; while(::GetMessage(&msg,NULL,0,0)) { ::TranslateMessage(&msg);//转换为键盘消息 ,"定时器"); bSetTimer = FALSE; return 0; } case WM_PAINT: { hdc = ::BeginPaint(hwnd, &ps);//使无效的客户区变的有效,并取得设备环境句柄 ::EndPaint(hwnd,&ps); return 0; } case WM_DESTROY: {

    81110编辑于 2022-05-09
  • 来自专栏全栈程序员必看

    编写一个C程序,运行时输出以下图形_java图形程序设计之图片显示

    hwnd); // 资源初始化 VOID PaintFunc(HWND hwnd); // 绘图函数 BOOL CleaupFunc(HWND hwnd); // 释放资源 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // 窗口过程函数 int WINAPI WinMain , 380, 100,WINDOW_WIDTH,WINDOW_HEIGHT,true); // 移动窗口 ShowWindow(hwnd, nShowCmd); UpdateWindow(hwnd InitRes(hwnd)) { MessageBox(hwnd, L"资源初始化失败!" g_hdc = GetDC(hwnd); // 获取设备环境句柄 PaintFunc(hwnd); ReleaseDC(hwnd, g_hdc); // 释放设备环境句柄 return

    61310编辑于 2022-09-23
  • 来自专栏有趣的django

    【读书笔记】Windows程序设计5

    与从BeginPaint函数返回的设备句柄不同,从GetDC返回的设备句柄中的裁剪区域是整个客户区,而不仅仅 是在无效矩形里 hdc = GetDC(hwnd); ReleaseDC(hwnd, hdc 4.4.滚动条 GetScrollInfo WINUSERAPI BOOL WINAPI GetScrollInfo( _In_ HWND hwnd, _In_ int nBar, _Inout_ LPSCROLLINFO lpsi); SetScrollInfo WINUSERAPI int WINAPI SetScrollInfo( _In_ HWND hwnd, 2.设备环境句柄还可以在处理非WM_PAINT消息时由windows程序获取 hdc = GetDC(hwnd); (other program lines) ReleaseDC(hwnd, &hdc DefWindowProc(hwnd, message, wParam, lParam); } VOID CALLBACK TimerProc(HWND hwnd, UINT message, UINT

    2.9K10编辑于 2022-12-21
领券