Entwickler-Ecke

Sonstiges (Delphi) - 3 Fragen


Tobias - Sa 05.10.02 12:49
Titel: 3 Fragen
hi. ich habe 2 fragen:

1. wie kann ich verhindern das mein programm im taskmanager steht? also es soll mit str-alt-entf nicht zu beenden sein...

2. wie kann dafür sorgen das man die maus nicht mehr bewegen kann?

3. ich habe eine text datei, in dieser textdatei steht nur ein wort. wie kann ich dann überprüfen, ob der text der txt datei mit dem text des editfeldes übereinstimmen?


bis11 - Sa 05.10.02 12:56

Hi,

zu 1.) : hätte ich da folgenden Code


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  Form1: TForm1;

function RegisterServiceProcess(dwProcessId,dwType:
    dword):Integer;stdcall;external 'kernel32.dll';

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterServiceProcess(0,1);
end;


zu 2.) Das kannst Du nur mit einem Hook machen, weiß aber nicht genau wie das funktioniert. Du solltest vielleicht mal danach im Forum suchen, vielleicht findest Du ja etwas.

zu 3.) Lade Deine Textdatei in eine Stringlist und vergleiche dann den Eintrag 0 aus der StringList mit dem Editfeld. Statt einer Stringlist kannst Du auch ein Memo nehmen wo die Textdatei drin geladen wird.


Tobias - Sa 05.10.02 14:26

ok danke! wenn noch jemand konkrete beispiele zu 2 + 3 weis bitte sagen :)


Delete - Sa 05.10.02 15:48

Zu 2 + 3 nicht, aber zu 1:

Ich freue mich schon darauf, wenn du (oder wer auch immer) das Programm auf einem NT-System (NT, 2000, & XP) testest. Da gibt´s die Funktion "RegisterServiceProcess" nämlich nicht. Und wenn du sie so einbindest, wie von bis11 gezeigt, sieht man zuerst eine unschöne Fehlermeldung.
Du müsstest die Funktion also dynamisch laden. Aber wie dem auch sei: auf NT-Systemen ist der vermeintliche Schutz demnach wirkungslos.


SMI - Sa 05.10.02 19:20

was Konkretes zu 3)

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Var
 str: TStrings;

begin
  str:=TStrings.Create;
  Try
   str.LoadFromFile('d:\xxx');
   if edit1.text = str.Text then
    showmessage('gleich');
  finally
   str.free
  end;
end;



SMI

(06.10.02 23:42 Tino) Code-Tags hinzugefügt.


Delete - Sa 05.10.02 23:47

@SMI: Kompiliert hast du deinen Code nicht oder? Dann wäre dir bestimmt die Kompilerwarnung aufgefallen:
Zitat:

[Warnung] Unit1.pas(31): Erstelle Instanz von 'TStrings' mit abstrakten Methoden


So gehts es richtig:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.FormCreate(Sender: TObject);
Var
  str: TStringList;
begin
  str:=TStringList.Create;
  Try
    str.LoadFromFile('d:\xxx');
    if edit1.text = str.Text then
    showmessage('gleich');
  finally
    str.free
  end;
end;


Delete - Sa 05.10.02 23:57
Titel: Re: 3 Fragen
Tobias hat folgendes geschrieben:
2. wie kann dafür sorgen das man die maus nicht mehr bewegen kann?


Kuck dir mal ClipCursor [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/cursors/cursorreference/cursorfunctions/clipcursor.asp] an.

Fang damit die Maus in einem kleine Rechteck ein, sollte es eigentlich tun.


Tobias - So 06.10.02 19:22

also mit dem tipp von 2tens komm ich absolut nicht klar..


Delete - So 06.10.02 19:52


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClipCursor(nil);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  rec:  TRECT;
begin
  rec.Top := Top;
  rec.Left := Left;
  rec.Right := Left + Width;
  rec.Bottom  := Top+ Height;
  ClipCursor(@rec);
end;


Wolff68 - So 06.10.02 20:05

Ups, war ich mal wieder zu langsam...

Aber ich hab auch mal versucht über GetWindowRect(Application.Handle, rec); den Cursor im aktuellen Fenster zu halten. Ist mir aber dann die Maus komplett stehengeblieben. OK. Warscheinlich hab ich mich zu dumm angestellt auf die Schnelle. *gg*

Übrigends macht sich ein

Quelltext
1:
2:
3:
4:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClipCursor(NIL);
end;

nicht schlecht, oder wird die Maus automatisch wieder freigegeben wenn die Anwendung geschlossen wird?


Wolff68 - So 06.10.02 20:08

Übrigends macht mich die Kombination deiner ersten 2 Fragen doch irgendwie misstrauisch.

Was versuchtst denn da zu basteln?
Die Maus von einem nicht-schliessbaren Programm einfangen ???
hmmm.


Delete - So 06.10.02 20:12

Wolff68 hat folgendes geschrieben:

nicht schlecht, oder wird die Maus automatisch wieder freigegeben wenn die Anwendung geschlossen wird?

Nein.


Wolff68 - So 06.10.02 21:12

Oh. Dann hatte ich ja gut daran getan es in die Close-Proc zu packen 8)

Den Button2 hätt ich ja bei mir mit der Maus dann nimmer erreicht. (OK. Über Tastatur wäre es natürlich auch gegangen.)


SMI - So 06.10.02 22:16

@Lucky
Zitat:
Kompiliert hast du deinen Code nicht oder? Dann wäre dir bestimmt die Kompilerwarnung aufgefallen


- Nein hab ich wirklich nicht, mein Compiler war mein Kopf, und der hat dummerweise diese Warnung nicht mehr in Erinnerung gehabt.

SMI


Delete - So 06.10.02 22:32

Ich habe mir wohl einen verdammt schweren Nick ausgesucht :roll: : Lucky, Lucy, luckie, Luky. Das sind doch nur 6 Buchstaben. :shock:


SMI - So 06.10.02 22:56

Sorrie :-)


Delete - So 06.10.02 22:58

Mußt dich nicht entschuldigen. Ist mir egal. Bloß heute war der Name wohl in jeden zweiten Posting falsch geschrieben, hier, Coder-Area, Delphi-Praxis. Nur im Spotlight nicht, aber das lag wohl daran, dass sie micht nicht zitieren mußten. :P


Tobias - Mo 07.10.02 18:25

>Übrigends macht mich die Kombination deiner ersten 2 Fragen doch >irgendwie misstrauisch.

>Was versuchtst denn da zu basteln?
>Die Maus von einem nicht-schliessbaren Programm einfangen ???
>hmmm.

die antwort: soetwas wie einen "bildschirmschoner" mit kennwort. im einem formular wird das kennwort in eine txt datei geschrieben und im anderen um das programm zu schliesen wird genau dieser inhalt der textdatei verlangt. grund für maus nicht bewegen: wäre doch schade wenn man das prog einfach nach unten ziehn könnte oder? und dann das mit dem strg-alt-entf das man es logischer weise nicht einfach abschalten kann ;)


a.C.k - Fr 11.10.02 13:55

Vergess nicht den HotKey Alt+F4 :!:

Sollte aber ein Thema sein, den zu überlagern....