|
|
Bringwindowtotop- #17834 in section [742574] |
Sec: |
(51) MS-Visual FoxPro 9.0 |
Von: |
Hartmut Eckert |
An: |
Thomas Geissler |
Am/Um: |
21.02.2020 16:46:40 |
Hallo Thomas, wie gesagt rufe ich beim verlassen einer Textbox die Rechtschreibprüfung von Word auf.Da das gesuchte Fenster vor "doc.CheckSpelling()" nicht vorhanden ist und der Code erst nach schliessen des Fensters weiter ausgeführt wird starte ich zum suchen des Fensters einen Timer. Der findet auch das Fenster , aber in den Vordergrund bring ich es halt ums verwecken nicht. Hab ich das Fenster aber einmal angeklickt erscheint es automatisch dann bei weiteren aufrufen automatisch im Vordergrund. Nur halt beim ersten Aufruf der Rechtschreibprüfung bleibt das Fenster verdeckt.Ich hab auch schon mit Sleep(1000) Pausen eingebaut und eine extra exe nur zum suchen des Fensters und in den Vordergrund bringen gebaut. Gefunden wird das Fenster immer , nur in den Vordergrund kommts mit den verschiedensten versuchen nicht. Thisform.timer1.Enabled= .T. oWord=CREATEOBJECT("Word.Application") oword.Visible=.f. doc=oword.Documents.Add Range=doc.Range range.Text=Thisform.text1.value doc.Activate() doc.CheckSpelling() Thisform.text1.Value=doc.range.text doc.close(.f.) oword.Visible=.f. oword.quit() und im Timer DECLARE Sleep IN kernel32 INTEGER dwMilliseconds loShell = CREATEOBJECT("wscript.shell") LOCAL lnHandle SET TALK off declare integer FindWindow in win32API string @ cClass, string @ cTitle lnHandle=FindWindow(0,"Rechtschreibung: Deutsch (Deutschland)") IF lnHandle>0 loShell.AppActivate("Rechtschreibung: Deutsch (Deutschland)") Sleep(500) && 1 second loShell.AppActivate("Ontop") Sleep(500) && 1 second loShell.AppActivate("Rechtschreibung: Deutsch (Deutschland)") This.Enabled= .F. endif **************************************************************** &&oder LOCAL lnHandle SET TALK off Thisform.text1.Value="nix" Thisform.text1.refresh() WAIT WINDOW "nix" timeout 1 declare integer FindWindow in win32API string @ cClass, string @ cTitle lnHandle=FindWindow(0,"Rechtschreibung: Deutsch (Deutschland)") DECLARE Long BringWindowToTop in Win32API Long BringWindowToTop(lnHandle) DECLARE INTEGER SetActiveWindow IN user32 INTEGER SetActiveWindow(lnHandle) declare SetForegroundWindow in Win32api integer SetForegroundWindow(lnHandle) &&SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWHIDE) loShell = CREATEOBJECT("wscript.shell") loShell.AppActivate("Rechtschreibung: Deutsch (Deutschland)") &&declare integer FindWindow in win32API string @ cClass, string @ cTitle &&hwnd=FindWindow(0,"Rechtschreibung: Deutsch (Deutschland)") &&DECLARE BringWindowToTop IN WIN32API as TopWindow &&DECLARE INTEGER BringWindowToTop IN Win32API INTEGER HWND &&BringWindowToTop(HWND) Thisform.text1.Value=STR(lnHandle) IF lnHandle>0 loShell = CREATEOBJECT("wscript.shell") loShell.AppActivate("Rechtschreibung: Deutsch (Deutschland)") endif Grüße Hartmut
|
|
|
|