| |
|
|
- Página 1 - |
|
Nico Madysa | Yo weiß no así bastante, woran lo liegt, aber seit Kruzem spinnen el Características para Finden de Fenstern. FindWindow() schmiert de, si kein Ventana a el Maske passt. AddWindows klappt garnicht. (macht beim Verwenden el Adler) Liegt el a XProfan10 oder más a ME? |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
GDL | ¡Hola Nico,
en me läufts auch.
Servus Georg |
|
|
| |
|
|
|
Frank Abbing | En me auch. Hast tal vez qué con COM oder OLE no Haga clic en Aceptar? Un el Dlls |
|
|
| |
|
|
|
| Geht en me auch Windows98 SE). |
|
|
| |
|
|
|
Sebastian Sprenger | ¡Hola zusammen, Yo tener el Fuente en diesem Hilo ahora zwar no getestet, kann Nicos Problemas aber nachvollziehen. Mi Programas en Profano 7.0e haben se früher bajo Windows ME (y si yo mich bastante erinnere, auch bajo Windows 98) wegen el Profano-Función FindWindow auch aufgehängt. Inzwischen tener Yo ellos por el API-Función ersetzt, seitdem passierte lo en denselben Programmen nie otra vez.
Gerade eben Tuve otra vez una Testprogramm con FindWindow y AddWindows geschrieben y jeweils en el Interpreter y el Runtime de Profano 5.0 y Profano 7.0e comenzó. Sombrero se auch otra vez alles aufgehängt. Nach una Neustart de Windows ME funktionierte lo tadellos y yo podría danach no Se bloquea mehr reproduzieren.
Programmcode scheint de paso völlig egal a ser, lo passierte como dijo ya en media fertigen Programmen (no bajo 500 Zeilen) sowie en sinnfreien Einzeilern (also sin Variables oder irgendwelche Ausgaben).
Bajo Windows XP dagegen funktionierte alles siempre. Saludo, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 25.11.2006 ▲ |
|
|
|
|
| Como genau sieht el Aufhängen de? Welche API verwendest du, en Findwindow a sustituir?
Bajo el API EnumWindows findet al hier:
The EnumWindows function does not enumerate child windows. This function is more reliable than calling the GetWindow function en a bucle. An application that calls GetWindow to perform this task risks being caught en a infinite bucle or referencing a handle of a window that has been destroyed.
Welche API steckt hinter FindWindow? Könnte en efecto solche Ursachen haben... |
|
|
| |
|
|
|
Sebastian Sprenger | ¡Hola Andreas, beim Aufhängen gibts no viel a sehen: Profano macht zuerst seine Arbeit, y sobald lo en el Profano-Función FindWindow stößt, macht Profano gar nichts mehr y lässt se sólo todavía encima Strg+Alt+Entf y ca. 10 Sekunden warten final. Keine Fehlermeldungen, BlueScreens oder dergleichen. Yo benutze el API FindWindow con lpClassName = 0 y lpWindowName = Stringadresse. Saludo, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 26.11.2006 ▲ |
|
|
|
|
RGH | Como lo en Profano-Función FindWindow() posible ser se, sólo el Anfang des Fenstertitels anzugeben (wichtig en Programmen, el el aktuellen Dateinamen a el Fenstertitel anhängen), verwende Yo no el API FindWindows (oder FindWindowEx), pero folgende Función (Delphicode): KompilierenMarcaSeparaciónIPar1 := GetWindow(GetDesktopWindow,GW_Child);
IPar1 := GetWindow(IPar1,GW_HWndFirst);
SendMessage(IPar1,wm_GetText,32767,LongInt(Addr(C2)));
While (StrLIComp(C1,C2,E)<>0) And (IPar1 <> 0) Do Begin
IPar1 := GetWindow(IPar1,GW_HWndNext);
SendMessage(IPar1,wm_GetText,32767,LongInt(Addr(C2)));
>;
In C1 (nullterminierter String) es el a FindWindow übergebene Parámetro, IPar1 se zurückgegeben. Was macht el Función genau? Línea 1: Yo ermittele el erste Kindfenster des Bildschirmhintergrundes (GetDeskTopWindow) Línea 2: Yo ermittele el erste Anwendungsfenster. Gibt lo keins, ha IPar1 valor 0. Línea 3: Yo ermittele el Fenstertitel dieses Fensters. Dieser es nun en C2 (nullterminierter String). Línea 4: Solange String C1 no el Anfang des Cuerdas C2 entspricht y IPar 1 ungleich 0 es ... (con otro Worten: el Bucle se abgebrochen, si kein weiteres Ventana existiert oder una passendes gefunden wurde) Línea 5: Como todavía kein passendes Ventana gefunden wurde, ermittele Yo el nächste Ventana ... Línea 6: ... y dessen Fensteritel Línea 7: Und más con el Bucle (entspricht el EndWhile en Profano).
Kurz: El Bucle se verlassen, si una Ventana gefunden wurde, dessen Fenstertitel con el übergebenen String beginnt (entonces ha IPar1el entsprechende Handle) oder kein weiteres Ventana existiert (entonces ha IPar1 valor 0). Lo debería also no Fall geben, en el esta Bucle endlos se ejecuta.
En me tritt dieser Fall auch nie en. En wem lo anders es, el debería simplemente veces obige Rutina en XProfan umsetzen y ausprobieren. Dann müßte se ermitteln dejar, qué no va mal. Hier el Rouitine en XProfan: KompilierenMarcaSeparación $H windows.ph
$H messages.ph
Proc XFindWindow
Parámetros C1$
declarar IPar1%, C2$
C2$ = Espacio$(32767)
IPar1% = ~GetWindow(~GetDesktopWindow(), ~GW_Child)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndFirst)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
Mientras que (Left$(C2$, Len(C1$)) <> C1$) And (IPar1% <> 0)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndNext)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
EndWhile
Volver IPar1%
ENDPROC
CLS
Imprimir Ergebnis = + Str$(XFindWindow(XProfan))
WaitInput
End
Für jegliche Infos bin Yo dankbar.
Saludo Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.11.2006 ▲ |
|
|
|
|
Sebastian Sprenger | Hola Roland, habs bajo Windows ME probiert. Lo liegt en cada Fall a WM_GETTEXT en Zusammenhang con Fenstern, el no reagieren.
Yo primero irgendein Programa abstürzen y luego el FindWindow-Rutina laufen dejar. Diese lief sólo más, como Yo el no mehr reagierende Programa encima el Taskmanager final hatte.
Irgendwann gab GetWindow(IPar1, GW_HWndNext) entonces en una vez una Handle zurück, en el WM_GETTEXT stecken blieb, a el se auch sonst nichts ermitteln ließ y el con Sicherheit auch no en el Taskmanager auftauchte. Saludo, Sebastian |
|
|
| Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32 Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM Windows Me, 1.8 Ghz, 256 MB RAM | 26.11.2006 ▲ |
|
|
|
|
| Bajo XP Tuve en algunos speziellen Fenstern ebenfalls veces el problema, el mein Proggi ([...] ) beim Ermitteln des Fenstertextes encima WM_GETTEXT una Abgang machte. Yo habe entonces el API GetWindowText verwendet, el klappte bestens (es pero no el idealste Weg). Auch el API SendMessageTimeout podría uno veces versuchen, así regele Yo el ahora en [...] . |
|
|
| |
|
|
|
Nico Madysa | OK, danke para el Ayuda a todos. Damit wäre zumindest FindWindow() geklärt. Aber qué es con AddWindows? Gibt lo dafür auch una Walk-Around? |
|
|
| |
|
|
|
| Dürfte el selbe Problema ser. |
|
|
| |
|
|
|
Nico Madysa | Suppi, also es el hier el/el/el Walk-Around: KompilierenMarcaSeparación $H windows.ph
$H messages.ph
Proc XAddWindow
Parameters C1$
declare IPar1%, C2$
C2$ = Space$(32767)
IPar1% = ~GetWindow(~GetDesktopWindow(), ~GW_Child)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndFirst)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
While (Left$(C2$, Len(C1$)) <> C1$) And (IPar1% <> 0)
IPar1% = ~GetWindow(IPar1%, ~GW_HWndNext)
SendMessage(IPar1%, ~wm_GetText, 32767, Addr(C2$))
AddString C2$
EndWhile
ENDPROC
Oder? |
|
|
| |
|
|