工控编程吧

标题: 如何在 WinCC 中将其它程序的窗口置于最前面 [打印本页]

作者: baikhgmv    时间: 2016-11-9 09:31
标题: 如何在 WinCC 中将其它程序的窗口置于最前面
如何在 WinCC 中将其它程序的窗口置于最前面

可以通过使用 Windows API 函数 FindWindow找到一个窗口的句柄。


例子 1
假设您希望将一个 Microsoft Access 窗口置于最前面:
HWND Handle= NULL;
Handle= FindWindow("OMAIN",NULL);
if(Handle)
{
    ShowWindow(Handle, SW_MINIMIZE);
    ShowWindow ( Handle, SW_SHOWNORMAL );
    SetForegroundWindow(Handle);   
}
else
    ProgramExecute("C:\\MSOffice.97\\Office\\ACCESS.EXE");
如果没有发现该窗口,随后 Microsoft Access 将重新启动。
FindWindow 函数的注意事项:
  
  • 第一个参数是窗口的
    可以使用编译器(比如:用 Visual C++ 中的 Spy 命令)找到类。
      
  • 第二个参数窗口的标题(标题栏)。可以指定两个参数中的任何一个,或者两个都指定。在本例中命令类似于以下形式:
      
    Handle=FindWindow(NULL,"Microsoft Access -");

如果你在寻找窗口名,那么请注意对于一些程序标题是有规定语言的,对于不同的语言有可能寻找不到。类总是独立于语言的。
如果知道窗口的类,那么也可以将此过程用于其它的应用程序。
以下是一些应用程序的窗口类的名称:
应用程序
Windows 2000/XP下的类名称
Windows 7下的类名称

Access
OMAIN
OMAIN

Internet Explorer
IEFrame
IEFrame

Microsoft Excel
XLMAIN
XLMAIN

Microsoft Word
OpusApp
OpusApp

MS-DOS Input Prompt
ConsoleWindowClass
ConsoleWindowClass

Notepad
Notepad
Notepad

Paint
MSPaintApp
MSPaintApp

Calculator
SciCalc
CalcFrame

Windows Explorer
ExploreWClass
CabinetWClass

SIMATIC Manager
s7tgtopx
s7tgtopx

WinCC V4.x Control Center
MCPFrameWndClass
---

WinCC V5.x / V6.x / V7.x WinCC Explorer
WinCCExplorerFrameWndClass
WinCCExplorerFrameWndClass

WordPad
WordPadClass
WordPadClass
表 01
例子 2
WinCC V5.x / WinCC V6.x / WinCC V7.x: WinCC项目编辑器置最前端
HWND Handle= NULL;
Handle= FindWindow("WinCCExplorerFrameWndClass",NULL);
if(Handle)
{
    ShowWindow(Handle, SW_MINIMIZE);
    // This entry is only necessary in Windows 2000
    //(or in Windows XP and Windows 7 in the case of WinCC V6.x / WinCC V7.x)
    ShowWindow ( Handle, SW_SHOWNORMAL );
    SetForegroundWindow(Handle);
}
例子 3
WinCC V4: 控制面板置最前端
HWND Handle= NULL;
Handle= FindWindow("MCPFrameWndClass",NULL);
if(Handle)
{
    ShowWindow ( Handle, SW_SHOWNORMAL );
    SetForegroundWindow(Handle);
}














欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4