我有一个管理病人人口统计信息的应用程序。与该数据一起,用户可以扫描患者的照片并将该照片分配给患者。当用户单击扫描按钮时,将打开一个单独的应用程序作为对话框,以便扫描图像。在XP上运行时,一切都运行得很好。成像应用程序加载正常,并获得了焦点。然而,在Vista上,成像应用程序偶尔不会获得焦点,而是在主应用程序后面弹出。当运行全屏或通过2008 application Server时,你看不到应用程序,你只看到一个锁定的屏幕,看起来什么都没有发生。有没有办法改变Vista上的窗口焦点管理,让它像XP那样工作?如果可能的话,我正在寻找一种方法来解决这个问题,而不需要更改实际的应用程序。
发布于 2008-10-08 19:19:08
我认为您必须对您的应用程序进行更改,以允许图像处理应用程序获得焦点。我假设您的应用程序通过ShellExecute或CreateProcess启动图像处理应用程序。如果是这样的话,您可以通过SHELLEXECUTEINFO.hProcess (对于ShellExecute)或PROCESS_INFORMATION.hProcess (对于CreateProcess)来获取启动的进程的句柄。启动映像应用程序后,立即调用AllowSetForegroundWindow应用程序接口:
AllowSetForegroundWindow(GetProcessId(hProcess));这将允许成像应用程序在启动时将其主窗口/对话框置于前台。
发布于 2008-10-08 20:03:35
您可以尝试以下步骤:
发布于 2008-10-08 19:07:04
您可以遍历所有顶级HWND,并通过其窗口类识别扫描应用程序,然后发送适当的消息来引发窗口。
https://stackoverflow.com/questions/184340
复制相似问题