问题与在使用.cls程序关闭对话框屏幕后没有将焦点恢复到进度应用程序有关,并且上次访问的应用程序位于顶部。正如我尝试了所有选项一样,获取框架句柄,应用程序的processid和浏览器句柄,以便在关闭子窗口后将进度应用程序置于顶部。
我已针对此问题尝试了以下方法:
Senerio 1 使用所选程序的句柄并将条目应用于窗口。 用于实现此senerio的步骤如下: 1.)将CheckMainFrame定义为PUBLIC STATIC PROPERTY,用于在TabFolder.cls中获取和设置。 2.)在调用所选程序后在oplauncher.p中设置程序句柄。 FolderForm:CheckMainFrame = hLaunchProc。 3.)在关闭对话框后获取方法CheckWindowClose并将条目应用于窗口容器。
Senerio 2 使用查看器的句柄并将条目应用于浏览器。 用于实现此senerio的步骤如下: 1.)将CheckBrowser定义为PUBLIC STATIC PROPERTY,用于在TabFolder.cls中获取和设置。 2.)在CreateRenderedBrowsers中设置浏览器句柄,在其中循环浏览文件夹页面以及查找时 浏览器并获得bowser句柄。 TabFolderForm:CheckBrowser = hColumn。 3.)关闭对话框后,在方法CheckWindowClose中获取浏览器句柄并将条目应用于浏览器。
Senerio 3 使用查看器窗口小部件句柄并将条目应用于第一个字段,光标正在获得焦点。 用于实现此senerio的步骤如下: 1.)将CheckViewer定义为PUBLIC STATIC PROPERTY,用于在TabFolder.cls中获取和设置。 2.)在CreateRenderedBrowsers中设置查看器句柄,其中循环浏览器的文件夹页面 小部件,当它找到查看器并获取查看器的第一个窗口小部件句柄并设置句柄 观众的公共财产。 TabFolderForm:CheckViewer = hViewerWidget。 3.)关闭对话框后,在方法CheckWindowClose中获取Viewer句柄并将条目应用于Viewer。
Senerio 4
使用应用程序的进程ID并将后焦点应用于应用程序。
用于实现此senerio的步骤如下:
1.)在Win32.cls程序中定义了一个GetCurrentProcessId方法,用于ge应用程序的进程id。
2.)Windows.API.Win32:GetCurrentProcessId(OUTPUT ProcessId)。
关闭对话框并调用方法后,在方法CheckWindowClose中获取processid
THIS-OBJECT:鼠标点击(的ProcessID)
。
强制鼠标单击事件如下例所示:
Windows.API.Win32:PostMessage的(hWidget,
Windows.API.WinUser:WM_SETFOCUS,
0,
0)。
Windows.API.Win32:PostMessage的(hWidget,
Windows.API.WinUser:WM_SETCURSOR,
0,
0)。
Windows.API.Win32:PostMessage的(hWidget,
.Windows.API.WinUser:WM_MDIRESTORE,
0,
0)。
有人能建议我吗?