如何在 WinCC 中将其它程序的窗口置于最前面?

例子 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.97OfficeACCESS.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);
}

关键字
编程技巧

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc325011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论