![]() |
Re: Notepad fernsteuern
Zitat:
|
Re: Notepad fernsteuern
Zitat:
|
Re: Notepad fernsteuern
Zitat:
Die Fehler bleiben auch dann gespeichert, wenn dein Programm zwischendurch beendet wurde. Die Grösse des Protokolls sollte begrenzt werden (z.B. 500 kB). Ich hätte da schon eine fertige Komponente. Anstelle dem Notepad kann man auch einen Webbrowser (Internet Explorer) benützten um das Fehlerprotokoll per Knopfdruck anzuzeigen.
Delphi-Quellcode:
Eine Änderung des Protokolls ist über den Webbrowser nicht möglich; aber das ist auch nicht erwünscht.
function OpenURL(const url: string): Boolean;
begin Result := ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOW) > 32; end; ... OpenURL('file:'+name_der_logdatei); Du könntest auch das Eventlog von Windows verwenden; insbesondere dann, wenn deine Anwendung mal ein Dienst werden sollte. |
Re: Notepad fernsteuern
Danke für die Menge interessanter Kommentare.
Ob jemand den Error-Log editiert oder nicht wäre gar nicht wichtig, da das Error-Log dazu gedacht ist, andere anzuschwärzen :zwinker: also wenn man es ändert, schneidet man sich ins eigene Fleisch, ausserdem welcher am Resultat interessierter Admin würde Fakten manipulieren? Rauskommen tun solche Sachen immer....spätestens wenn man einen Grund abliefern muss...es gibt nur zwei zustände 1. Es funktioniert 2. Es gibt einen Grund dafür das es nicht funktioniert und dieser wird gerade behoben. Nunja ich habe es jetzt anders gelöst und einen Weg gefunden es innerhalb der Applikation unterzubringen ohne das Konzept zu zerstören. greez gabneo PS: Für alle anderen die jemals diesen Thread finden und aus irgendeinem Grund Notepad fernsteuern möchten, ich habe es so gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var wnd:HWND; Rect:TRect; i:Integer; s:string; begin shellExecute(handle,'open',PChar(getspecialfolder(handle,CSIDL_WINDOWS)+'\notepad.exe'),Nil,Nil,SW_NORMAL); sleep(50); <---------- ist sehr unsauber, um das kurze aufblitzen zu umgehen sollte man sich überlegen statt dem shellexecute befehl CreateProcess zu nehmen oder TShellExecuteInfo zu deklarieren und die richtige Formatierung (Top/Left/Height/width) gleich beim start mitzuübergeben, dann wird das sleep überfällig = kein aufblitzen mehr wnd:=FindWindow('notepad',nil); setwindowpos(wnd,hwnd_top,trunc((screen.DesktopWidth/2)-300),trunc((screen.DesktopHeight/2)-200),600,400,swp_showwindow); if wnd<>0 then begin wnd:=FindWindowEx(wnd,0,'Edit',nil); s:='TEST'; For i:=1 to Length(s) do SendMessage(wnd, WM_CHAR, Word(s[i]), 0); end; end; |
Re: Notepad fernsteuern
Und wenn Du mal vor diesem Aufruf ein paar Instanzen von Notepad öffnest und dort Text hineintippst, wirst Du schnell die Grenzen Deiner Lösung erkennen.
|
Re: Notepad fernsteuern
Ich gestehe das ich soweit noch nicht getestet habe...weil ich die idee es mit notepad lösen zu wollen ziemlich schnell verworfen habe :oops:
|
Re: Notepad fernsteuern
Hi,
Abgesehn davon würde ich vielleicht eher WM_SETTEXT als Length(Text) mal WM_CHAR zu benutzen ;) Gruß Neutral General |
Re: Notepad fernsteuern
@ Luckie:
Wenn man die Umgebungsvariable für Anwendungsdaten benutzt (Also APPDATA), dann brauch man unter Vista auch zum schreiben keine Admin-Rechte, weil man z.B. in diesen Pfad rauskommt: "H:\Users\TonyR\AppData\Roaming" Ich benutze eine INI, die genau dort gespeichert wird in einem meiner Programme (ohne Admin-Rechte ausgeführt) -> keine Fehler Edit: Anwendungsverzeichnis <> Anwendungsdatenverzeichnis :oops: ... mein Fehler (aber wenn das Prog nicht in C:\Programme ausgeführt wird, sondern z.B. auf dem Desktop gibts trotzdem keine Probleme |
Re: Notepad fernsteuern
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz