| |
|
|
Thomas Freier | Möchte eine Copy vom Dialogfenster machen. Klapp auch, wenn der Speicherpfad mit GetDir$(@) und nicht mit $ProgDir angegeben wird. Oder gibt es eine elegantere Lösung? KompilierenMarkierenSeparierenBeispiel
Kopiert Fensterelemte
Def @Getwindowrect(2) !USER32, GetWindowRect
Def keybd_event(4) !USER32,keybd_event
Def IsIconic(1) !USER32,IsIconic
Def CaptureScreen(0) keybd_event($2C,1,0,0)
Def CaptureActiveWindow(0) keybd_event($2C,0,0,0)
Def SetForegroundWindow(1) !USER32,SetForegroundWindow
Declare hdlg&,endebutton%,ende%,copybutton%,old_file$,text$
Cls
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
hdlg&=CreateDialog(%hwnd,Dialog,50,114,498,408)
endebutton%=CreateButton(hdlg&,Ende,200,180,60,23)
copybutton%=CreateButton(hdlg&,H-Copy,200,220,60,23)
old_file$ = GetDir$(@)
old_file$ = $ProgDir
WhileNot ende%
WaitInput
Case Getfocus(endebutton%): Let ende%=1
If Getfocus(copybutton%)
SetActiveWindow(hdlg&)
CaptureScreen()
MCLS 500,500
StartPaint -1
ClipLoadBmp 0,0;0
MCopyBmp 0,0-%maxX,%maxY > 0,0;0
text$= old_file$ + \ + Date$(3) + - + Translate$(Time$(0),:,-) + .BMP
SaveBmp text$,0,0-500,500
ClearClip
EndPaint
EndIf
Wend
|
|
|
| |
|
|
|
Jörg Sellmeyer | |
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.03.2009 ▲ |
|
|
|
|
Thomas Freier | Ja Jörg, wird bei den *.exe in beiden Fällen der richtige Pfad angezeigt. Nur einmal eben eine leere *.bmp erzeugt. |
|
|
| |
|
|
|
Jörg Sellmeyer | Nein, Du hast die Ergebnisse nicht richtig verglichen!! Sie zeigen unterschiedliche Ergebnisse. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.03.2009 ▲ |
|
|
|
|
Thomas Freier | Denke schon. Vermute jetzt die Ursache beim aktiven Fenster, denn viele Starts nacheinander führen zu 50%er Trefferquote. Ist aber unbefriedigend und ich muß weiter forschen. |
|
|
| |
|
|
|
| @Thomas:
Du musst unterscheiden zwischen dem Verzeichnis in dem die EXE liegt und dem Umgebungsverzeichnis des laufenden Prozesses.
Wechselst Du z.B. per chDir (getDir ) nach Laufwerk D:, dann liegt die Exe $progDir ja trotzdem noch z.B. auf Laufwerk C:.
Musst immer z.B. per chDir selbst sicherstellen, dass sich das Umgebungsverzeichnis immer am gewünschten Ort è, weil ein Umgebungsverzeichnis unter bestimmten Umständen auch geerbt werden kann. |
|
|
| |
|
|
|
Jörg Sellmeyer | Nein - es ist alles viel einfacher. Schau Dir das Ergebnis an. Erstens: Im Interpreter kann es nicht funktionieren, da dann evtl. vom ProfEd das Projektverzeichnis als aktueller Pfad eingestellt ist. $ProgDir gibt dann aber naturalmente das Profnaverzeichnis zurück. Ich vermute aber mal, das war nicht das Problem. Zweitens: Wenn also der gesuchte Pfad korrekt ist, hilft es nur, sich das Ergebnis nochmal genau anzusehen und dabei vor allem das letzte Zeichen zu berücksichtigen. Bei GetDir$() ist das der letzte Buchstabe des Programmpfades und bei $ProgDir? Wenn Du dann Deine Stringaddition ansiehst, potuto Dir evtl. ein Licht aufgehen: KompilierenMarkierenSeparierenold_file$ + \ + Date$(3) > |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.03.2009 ▲ |
|
|
|