标签: win32gui

从弹出窗口中获取文本

我正试图从弹出窗口中读取文本.

错误

标题总是一样的.我已经设法识别hwnd并使用下面的代码获得标题,但我无法弄清楚如何阅读内容.

import time

import win32gui, win32con


windows = []
def _MyCallback( hwnd, extra ):
  extra.append(hwnd)
win32gui.EnumWindows(_MyCallback, windows)

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':  print 'error window'
  time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

这是工作版本:

import time

import win32gui

while True:
  window = win32gui.GetForegroundWindow()
  title = win32gui.GetWindowText(window)
  if title == 'Errors occurred':
    control = win32gui.FindWindowEx(window, 0, "static", None)
    print 'text: ', win32gui.GetWindowText(control)
  time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

python winapi win32gui

9
推荐指数
2
解决办法
6647
查看次数

安装win32gui python模块

我试图通过运行此代码获取当前焦点窗口的名称...

import win32gui
name = win32gui.GetForegroundWindow()
Run Code Online (Sandbox Code Playgroud)

但是,我一直在努力

Traceback (most recent call last):
File "D:\Program_1\test.py", line 1, in <module>
import win32gui
ImportError: No module named win32gui
Run Code Online (Sandbox Code Playgroud)

我从这里安装了pywin32 http://sourceforge.net/projects/pywin32/?source=navbar.我犯的错是什么; 猜测它是非常基本的东西.提前致谢.

编辑:找到解决方案.我在64位Windows 7上安装了32位pywin32,因为64位版本给了我一个错误,它无法找到Python注册表.我在这里找到了一个需要Python 2.6版的解决方案,这在注册表中找不到.重新安装Python并为我自己安装它导致pywin32 64bit安装没有给出错误.

python win32gui

9
推荐指数
1
解决办法
4万
查看次数

Metro的东西在什么桌面上运行?

只是好奇,从WinAPI开发人员的角度来看,Metro应用程序运行的桌面是什么?

这个东西:

在此输入图像描述

c c++ winapi win32gui microsoft-metro

9
推荐指数
2
解决办法
1473
查看次数

如何设置多个单选按钮组以进行正确的Tab键顺序和键盘交互(WIN32)?

首先,这不是MFC.
这是我一直在研究的裁剪版GUI:

在此输入图像描述

正如您所看到的,我已经(尝试)使用以下代码创建两个不同的组:Icon和Button:

    index->hAddT.hwndIndex[2] = CreateWindowEx(NULL,L"BUTTON",L"Icon",WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
    200,135,120,170,WINDOWHANDLE,(HMENU)IDC_RADIOGROUP,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题,以及你可能看到的问题是,窗口只有一个单选按钮.这意味着用户不可能从Icon组中选择一个单选按钮,而从Button组中选择一个单选按钮.我已将每个单选按钮初始化为:

    index->hAddT.hwndIndex[3] = CreateWindowEx(NULL,L"BUTTON",L"Information",WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE,
    205,155,100,20,WINDOWHANDLE,(HMENU)IDC_RADIO1,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);       
Run Code Online (Sandbox Code Playgroud)

我想以某种方式将"Icon"组的单选按钮与"按钮"组的单选按钮分开,如果这是有道理的,因此每个组都有一个单选按钮.这将如何成为可能,它是否需要我创建一个新的窗口和一个新的回调程序只是为了有一个额外的单选按钮.必须有另一种方法来分组这样的子项.

2个单独的单选按钮组以相同的形式WINAPI(无MFC) 该链接对我的目的没有任何用处.

我有作为Windows第五版的编程,由Charles Petzold旁边作为参考,他在Group Boxes部分中说"组框通常用于包含其他按钮控件",但是没有真正的例子.

c++ winapi window win32gui radio-button

8
推荐指数
1
解决办法
7229
查看次数

如何监视远程PC上的活动窗口

我可以使用该wmi模块查看网络上远程计算机上发生的进程.这是一个使用wmi监视在我自己的PC上创建和删除的进程的示例.

import wmi, multiprocessing

def create():
    while True:
        crePro = cp()
        print('Creation',crePro.Caption,crePro.ProcessId,crePro.CreationDate)


def delete():
    while True:
        delPro = dp()
        print('Deletion',delPro.Caption,delPro.ProcessId,delPro.CreationDate)


c = wmi.WMI()
cp = c.Win32_Process.watch_for("creation")
dp = c.Win32_Process.watch_for("deletion")


if __name__ == '__main__':
    createProc = multiprocessing.Process(target = create)
    deleteProc = multiprocessing.Process(target = delete)

    createProc.start()
    deleteProc.start()
Run Code Online (Sandbox Code Playgroud)

我还读过有关使用win32gui活动窗口的信息.

import win32gui
win32gui.GetForegroundWindow()
Run Code Online (Sandbox Code Playgroud)

我读过有关的存在WM_SETFOCUSWM_ACTIVEwin32con,但我不能确定如何连接到这些流的远程PC上.

我的问题是:如何监控远程PC的活动窗口(我想使用WM_SETFOCUS或者WM_ACTIVE)

python wmi win32gui active-window python-3.x

8
推荐指数
1
解决办法
316
查看次数

是否有 Win32 API 来监视、定位和定位任务栏“通知区域”?

Windows 任务栏包含一个称为“通知区域”或“系统托盘”的区域,其中为想要在后台运行和/或显示系统通知的应用程序显示小图标。当任务栏位于屏幕底部或顶部时,此区域出现在右侧。

在多显示器设置中,即使任务栏设置为在所有显示器上显示,此“通知区域”也只会出现在其中一个任务栏上。您可以通过将任务栏拖动到您喜欢的任何显示来控制通知区域出现在哪个显示上。

我的问题是:

有没有什么直接的 API 可以找到任务栏“通知区域”的屏幕、位置和方向?

我找到了一个搜索 Shell_TrayWnd 窗口句柄的示例,然后对其位置进行数学运算,尝试找出它所处的方向(即任务栏位于屏幕的哪个边缘)。

但是,这非常脆弱,因为它取决于 Windows 任务栏的当前 UI 设计。

Windows 10 引入了一个新的通用 Toast 通知系统,包括一个时髦的通知弹出窗口。但是,即使您已将通知区域移动到不同的监视器,包括打开和关闭系统通知浮出控件的按钮,浮出控件本身仍会显示在“主监视器”上

以上表明可能没有办法做到这一点,好像微软自己的通知没有遵循通知区域,实际上可能没有办法这样做。但是,通知区域的Microsoft文档提出了一个非常明智的想法,即 toast 应该显示在它附近......我认为他们只是没有考虑多显示器的情况。

微软吐司位置指南

winapi win32gui windows-10

8
推荐指数
1
解决办法
778
查看次数

Windows窗口类区分大小写吗?

MS文档显然是泥浆(并且类名称字符串没有经常引用),我想知道Win32 窗口类类名是否实际上区分大小写?

windows winapi win32gui windows-controls

7
推荐指数
1
解决办法
302
查看次数

如何在C++中为嵌入式Web控件提供图像数据

在我的C++应用程序中,我嵌入了(通过COM)Web浏览器(Internet Explorer)控件(CLSID_WebBrowser).

我可以使用IHTMLDocument2 :: write()方法在该控件中显示我自己的html,但如果html有<img src="foo.png">元素,则不会显示.

我假设有一种方法让我以某种方式为web控件提供foo.png的数据,但我找不到合适的地方来挂钩这个功能?

我需要完全控制提供foo.png的内容,所以解决方法如使用res://协议或保存到磁盘并使用file://协议都不够好.我只是想以某种方式插入我的代码,以便当嵌入式CLSID_WebBrowser控件<img src="foo.png">在IHTMLDocument2 :: write()给出的html数据中看到它时,它会要求我提供这些数据.

c++ winapi win32gui win32com

7
推荐指数
1
解决办法
985
查看次数

双缓冲?Win32 c ++

我正在尝试实现双缓冲但它似乎不起作用,即图形仍然闪烁.

每次鼠标移动时都会调用WM_PAINT.(WM_MOUSEMOVE)

粘贴WM_PAINT如下:

case WM_PAINT:
        {
            hdc = BeginPaint(hWnd, &ps);
            // TODO: Add any drawing code here...
            RECT rect;
            GetClientRect(hWnd, &rect);
            int width=rect.right;
            int height=rect.bottom;

            HDC backbuffDC = CreateCompatibleDC(hdc);

            HBITMAP backbuffer = CreateCompatibleBitmap( hdc, width, height);

            int savedDC = SaveDC(backbuffDC);
            SelectObject( backbuffDC, backbuffer );
            HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));
            FillRect(backbuffDC,&rect,hBrush);
            DeleteObject(hBrush);


            if(fileImport)
            {
                importFile(backbuffDC);
            }

            if(renderWiredCube)
            {
                wireframeCube(backbuffDC);
            }

            if(renderColoredCube)
            {
                renderColorCube(backbuffDC);

            }

            BitBlt(hdc,0,0,width,height,backbuffDC,0,0,SRCCOPY);
            RestoreDC(backbuffDC,savedDC);

            DeleteObject(backbuffer);
            DeleteDC(backbuffDC);

            EndPaint(hWnd, &ps);
        }
Run Code Online (Sandbox Code Playgroud)

c++ gdi win32gui

7
推荐指数
1
解决办法
7410
查看次数

win32应用程序,Windows窗体应用程序和控制台应用程序有什么区别?

我想知道windows表单应用程序,win32application和控制台之间有什么区别,我知道windows表单应用程序和win32应用程序都是gui工具,但我想知道何时使用一个而不是另一个,我可以转换控制台应用程序到Windows窗体应用?

c++ windows console-application win32gui

7
推荐指数
3
解决办法
1万
查看次数