Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Notepad fernsteuern (https://www.delphipraxis.net/102576-notepad-fernsteuern.html)

Luckie 31. Okt 2007 12:27

Re: Notepad fernsteuern
 
Zitat:

Zitat von guidok
Es sollte doch kein Problem sein im Anwendungsverzeichnis eine Datei errorlog.txt zu speichern.

Doch das ist es, weil im Anwendungsverzeichnis nur Administratoren Schreibrechte haben.

Hansa 31. Okt 2007 12:34

Re: Notepad fernsteuern
 
Zitat:

Zitat von guidok
.. Dazu noch eine Meldung für den Benutzer, das diese Datei erzeugt wurde, evtl. mit einer Frage kombiniert, ob sie sofort geöffnet werden soll.

Zum Lesen öffnen -> Ja. Zum Schreiben öffnen -> klares Nein. Solche Dateien müssen zudem fortlaufend sein. Stichwort : Append Es sollte keiner was dran ändern können. Ansonsten gilt : glaube nur dem Logbuch, was du selber gefälscht hast. :shock: Im Zweifellsfall verursacht nämlich immer dein Programm die Fehler, da die DAUs eben nie welche machen und der Uralt-Rechner sowieso ewig hält ! :stupid:

shmia 31. Okt 2007 12:41

Re: Notepad fernsteuern
 
Zitat:

Zitat von gabneo
Nun mir geht es darum, ich habe ein Programm das Termingesteuert Jobs ausführt. Dieses Läuft absolut Fehlerfrei (stolzbin) und wird produktiv eingesetzt. Jetzt kam allerdings ein Problem auf dessen Ursache nicht in meiner Macht liegt, weswegen ich dennoch darauf reagieren will. Dazu benötige ich eine "Reporting"-Schnittstelle über die ein Error-log bei bedarf ausgegeben werden kann.

Nun dann wäre es am sinnvollsten, jegliche Fehler einfach in einer Log-Datei zu protokollieren.
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:
function OpenURL(const url: string): Boolean;
begin
   Result := ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOW) > 32;
end;
...
   OpenURL('file:'+name_der_logdatei);
Eine Änderung des Protokolls ist über den Webbrowser nicht möglich; aber das ist auch nicht erwünscht.

Du könntest auch das Eventlog von Windows verwenden; insbesondere dann, wenn deine Anwendung mal ein Dienst werden sollte.

gabneo 31. Okt 2007 13:29

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;

DeddyH 31. Okt 2007 13:46

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.

gabneo 31. Okt 2007 13:51

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:

Neutral General 31. Okt 2007 13:54

Re: Notepad fernsteuern
 
Hi,

Abgesehn davon würde ich vielleicht eher WM_SETTEXT als Length(Text) mal WM_CHAR zu benutzen ;)

Gruß
Neutral General

TonyR 31. Okt 2007 13:57

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

Hansa 31. Okt 2007 16:48

Re: Notepad fernsteuern
 
Zitat:

Zitat von gabneo
..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

Wer soll da angeschwärzt werden ? :shock: Es geht lediglich darum, die Fehler aufzudecken. Glaub es mir, die werden die nie freiwillig zugeben ! Deshalb scheidet die M;glichkeit einer Editierung komplett aus. Zumindest w[rfde ich sie nicht freiwillig zulassen. Gebraucht wird ein Textdatei-Browser.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.
Seite 2 von 2     12   

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