Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit RunOnce (https://www.delphipraxis.net/23481-problem-mit-runonce.html)

HaCkAttaCk2001 3. Jun 2004 20:31


Problem mit RunOnce
 
Hi @ all.

Folgendes: Ich schreibe derzeit an einem Sicherheitsprogramm. Dieses soll sich (nach dem Anmeldebildschirm) als allererstes Öfnnen und Windows soll sämtliche anderen Programme erst dann laden, wenn das Passwort richtig ist. Das Programm beendet sich aber nicht, wenn das PW richtig ist, sondern geht in den SysTray. Windows scheint das aber nicht zu akzeptieren. Erst wenn ich das Programm vollständig schließe läuft Windows weiter.
Kann ich Windows nicht irgendeine Message schicken, dass er mit der Bearbeitung der Autostarteinträge fortfahren kann?


C ya!

Chewie 3. Jun 2004 20:33

Re: Problem mit RunOnce
 
Für Sicherheitsprogramme solltest du (zumindest unter 2000/XP) die GINA modifizieren. Assarbard hat dazu mal was gemacht, such mal danach.

HaCkAttaCk2001 3. Jun 2004 21:05

Re: Problem mit RunOnce
 
Zitat:

Zitat von Chewie
Für Sicherheitsprogramme solltest du (zumindest unter 2000/XP) die GINA modifizieren. Assarbard hat dazu mal was gemacht, such mal danach.

Hi.

Das wurde mir schon öfters gesagt, aber löst das auch mein Problem? Derzeit funktioniert alles, ohne in irgendwelchen Systemdateien herumzueditieren (bis auf die Registry).

C ya!

neolithos 3. Jun 2004 21:23

Re: Problem mit RunOnce
 
Mach doch zwei Programm daraus:

- Anmelde Bildschirm Programm
- SysTray Programm

HaCkAttaCk2001 3. Jun 2004 21:33

Re: Problem mit RunOnce
 
Zitat:

Zitat von neolithos
Mach doch zwei Programm daraus:

- Anmelde Bildschirm Programm
- SysTray Programm

Hm ja... das ist keine schlechte Idee... aber das benötigt auch wieder nur Speicherplatz (sind zwar nur kb, aber manche haben ja auch nur 'n Modem...). Ich wollte das möglichst in einem Programm lösen.

Ich hab da grad was entdeckt... ob ich mein Problem gelöst kriege, wenn ich mein Programm nicht mit RunOnce sondern mit RunServices starte? Werd's gleich mal probieren und mich dann wieder melden.


C ya!

Luckie 4. Jun 2004 11:26

Re: Problem mit RunOnce
 
Zitat:

Zitat von HaCkAttaCk2001
Kann ich Windows nicht irgendeine Message schicken, dass er mit der Bearbeitung der Autostarteinträge fortfahren kann?

´
Wie hast du es denn geschaft Windows praktisch anzuhalten? :shock:

HaCkAttaCk2001 5. Jun 2004 11:13

Re: Problem mit RunOnce
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von HaCkAttaCk2001
Kann ich Windows nicht irgendeine Message schicken, dass er mit der Bearbeitung der Autostarteinträge fortfahren kann?

´
Wie hast du es denn geschaft Windows praktisch anzuhalten? :shock:

Hi.

Wenn man ein Programm über RunOnce startet, wartet Windows (leider) so lange, bis das Programm beendet ist. Es soll aber nicht beendet werden, denn es geht in den SysTray. Nun würde ich gern wissen, ob ich Windows eine Message schicken kann, dass es weitermachen soll.


C ya!

PS: Das starten über RunServices hat nichts gebracht.

Ratte 5. Jun 2004 18:24

Re: Problem mit RunOnce
 
Hi,

wie wärs' wenn du ein kleines Proggi machen würdest, das nur dein Hauptprog. aufruft und sich dann beendet?

Ratte

HaCkAttaCk2001 6. Jun 2004 10:25

Re: Problem mit RunOnce
 
Zitat:

Zitat von Ratte
Hi,

wie wärs' wenn du ein kleines Proggi machen würdest, das nur dein Hauptprog. aufruft und sich dann beendet?

Ratte

Hi.

Da mir auch nix bessres eingefallen ist, hab ich das nun auch so gemacht...

Eine Frage: Ich komprimier meine Programme immer mit ASPack, weil das recht sicher ist und sehr gut komprimiert... allerdings ist das "Restarter"-Programm trotzdem noch 132 Kb groß... kann ich irgendwie Delphi-Runtime-DLLs auslagern und die in das Verzeichnis legen? Da sind nun 3 Delphi-Progs in denen die Runtimes stecken... eine Runtime würde doch sicher reichen, oder?

Wie mach ich das ^^ ?

C Ya!

Ratte 6. Jun 2004 16:32

Re: Problem mit RunOnce
 
Für's starten könntest du ein Kommandozeilenproggi nehmen. Das ist kleiner.

Ratte

Karlson 9. Jun 2004 19:32

Re: Problem mit RunOnce
 
Zitat:

Zitat von HaCkAttaCk2001
Zitat:

Zitat von Luckie
Zitat:

Zitat von HaCkAttaCk2001
Kann ich Windows nicht irgendeine Message schicken, dass er mit der Bearbeitung der Autostarteinträge fortfahren kann?

´
Wie hast du es denn geschaft Windows praktisch anzuhalten? :shock:

Hi.

Wenn man ein Programm über RunOnce startet, wartet Windows (leider) so lange, bis das Programm beendet ist. Es soll aber nicht beendet werden, denn es geht in den SysTray. Nun würde ich gern wissen, ob ich Windows eine Message schicken kann, dass es weitermachen soll.


C ya!

PS: Das starten über RunServices hat nichts gebracht.

Neee, also bei mir zumindest nicht! Bei mir startet Windows mit RunOnce, das Programm einmal (wie once schon sagt) bei dem nächsten windowstart wird es dann nicht mehr geladen.
Ich frage, weil ich ein Programm habe, bei dem das auch sehr praktisch wäre mit dem warten...

c113plpbr 9. Jun 2004 21:37

Re: Problem mit RunOnce
 
Es gibt da noch ne art von 'minimal' Delphi-Programmen:
Du erstellst mit z.B. Notepad eine textdatei speicherst diese, und gibst ihr die endung .dpr. Dieses Delphi-'Projekt' öffnest du dann mit Delphi und schreibst folgendes rein:
Delphi-Quellcode:
program x;

begin

end.
(Wobei x dem dateinamen entspricht)
Zwischen begin und end fügst du dann den code ein, der das hauptprogramm startet, und solange wartet, bis windows 'gestartet' werden soll.
Diese Andwendung hat dann kein fenster, sondern schwirrt nur als prozess rum.
Wenn du nicht zu viele dateien einbindest, dürfte dein programm relativ klein sein.

ciao, Philipp

Luckie 9. Jun 2004 21:41

Re: Problem mit RunOnce
 
Zitat:

Zitat von c113plpbr
Es gibt da noch ne art von 'minimal' Delphi-Programmen:...

Oder man erstellt ein neues Konsolen-Programm. ;)

c113plpbr 9. Jun 2004 21:50

Re: Problem mit RunOnce
 
Zitat:

Zitat von Luckie
Oder man erstellt ein neues Konsolen-Programm. ;)

Da kommt aber dann das dumme konsolenfenster, das man nicht braucht ... ;-)

Luckie 9. Jun 2004 22:00

Re: Problem mit RunOnce
 
Zitat:

Zitat von c113plpbr
Zitat:

Zitat von Luckie
Oder man erstellt ein neues Konsolen-Programm. ;)

Da kommt aber dann das dumme konsolenfenster, das man nicht braucht ... ;-)

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}  // <- löschen und da kommt kein Fenster mehr ;)

uses
  SysUtils;

begin
  { TODO -oUser -cConsole Main : Insert code here }
end.

HaCkAttaCk2001 14. Jun 2004 21:34

Re: Problem mit RunOnce
 
Hi.

Ich hab mal den Tipp mit dem "Miniprogramm" benutzt... allerdings habe ich folgende Uses:

Code:
uses
 ShellAPI, StdCtrls, Windows, Messages, SysUtils, Dialogs;
... und schon wird das Programm riesig (nur 9 KB kleiner als vorher)... aber ich kann nicht drauf verzichten!


Kann man das Konsolenprogramm wirklich problemlos unter jedem Windows verwenden etc.? Bin da etwas skeptisch ^^. Werd das nachher mal versuchen...


C ya!

Luckie 14. Jun 2004 22:16

Re: Problem mit RunOnce
 
Brauchst du die Dialogs.pas? Messageboxen kannst du auch mit der Windows.pas erzeugen. Und brauchst du die SysUtils.pas? Die paar Funktionen, die man bräuchte (IntToStr, StrToInt) kann man sich auch schnell selber mit den Pascal Funktionen aus der System.pas schreiben. Und wozu StdCtrs? ist doch eine Konsolen-Anwendung. Was willst du da mit Buttons und Edits?

HaCkAttaCk2001 15. Jun 2004 13:31

Re: Problem mit RunOnce
 
Zitat:

Zitat von Luckie
Brauchst du die Dialogs.pas? Messageboxen kannst du auch mit der Windows.pas erzeugen. Und brauchst du die SysUtils.pas? Die paar Funktionen, die man bräuchte (IntToStr, StrToInt) kann man sich auch schnell selber mit den Pascal Funktionen aus der System.pas schreiben. Und wozu StdCtrs? ist doch eine Konsolen-Anwendung. Was willst du da mit Buttons und Edits?

Hi.

Es ist schön, dass man das kann :D . Aber ich habe nicht mal den Funken eines Schimmers einer Ahnung wie das zu bewerkstelligen ist :stupid: .
SysUtils verwende ich für ExtractFilePath. Dialogs für MessageDlg.

C ya.

PS: StdCtrls hatte ich tatsächlich vergessen herauszunehmen. Danke.

Luckie 15. Jun 2004 15:45

Re: Problem mit RunOnce
 
ExctractFilepath:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Procedure : CutFilename
// Comment  : ExtractFilepath

function CutFilename(s: string): string;
var
  i: integer;
begin
  result := s;
  for i := length(s) downto 1 do
    // Von hinten den Backslash suchen. Wenn gefunden alles bis inkl. Backslash kopieren
    if s[i] = '\' then
      begin
        result := copy(s, 1, i);
        // Nach dem ersten Backslash beenden
        break;
      end;
end;
MesasageDlg:
Delphi-Quellcode:
Messagebox(Handle, 'mein Text', 'Meine Caption', MB_ICONYESNO or MB_ICONQUESTION);


Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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