Amokers Pourquoi lis-tu ceci ? ^^ | Oui il est tout à fais possible
Mais je ne suis pas doué pour ca
regarde ce source :
Code :
- program Project1;
- uses
- Windows,
- shellapi,
- messages;
- {$R *.RES}
- var
- TimeCount : integer;
- TetrisMainHandle : integer;
- ClientSettingshandle : integer;
- IPserveurHandle : integer;
- ConnectBOutonHandle : Integer; //Differentes Handles Recherchées
- DialogBoutonHandle : Integer;
- Serveur : string;
- TetrisDir : string;
- TetrisWIndowText : string;
- const
- TimeOUT : Integer= 100 ;
- ClientSettingsText : string = 'Client Settings ' ;
- IPserveurClass : string = 'TEdit' ;
- ConnectBOutonTExt : string = 'Connect' ;
- DialogBoutonText : string = 'Partyline ' ;
- Erreur_Title : string = 'TetrisNet introuvable ou deja ouvert => fermeture de fast tetris.' ;
- erreur_Text : string = 'Erreur' ;
- DefaultServeur : string = 'tetrinet-progfou.no-ip.org';
- DefaultTetrisApp : string = 'C:\Program Files\Divers\TetriNET\TETRINET.EXE';
- DefaultTetrisWIndowText : string = 'TetriNET v1.13' ;
- BaliseVersion : string = 'Version=' ;
- BaliseServeur : string = 'Serveur=' ;
- BaliseTetris : string = 'AppDir=' ;
- //Ces constantes correspondent a un programme particulié
- {$I-}
- Function TestTetrisApp : integer;
- var
- F :file;
- Begin
- assignfile(F,TetrisDir);
- reset(F);
- result := filesize(F) ;
- closefile(f);
- end;
- {Func TestTetrisApp}
- Procedure LoadParams;
- var
- I : integer;
- ligne : string;
- Begin
- Serveur := DefaultServeur ;
- TetrisDir := DefaultTetrisApp;
- TetrisWIndowText := DefaultTetrisWIndowText;
- for I := 0 to paramcount do
- Begin
- ligne := paramstr(I) ;
- if copy(Ligne,1,length(BaliseServeur)) = BaliseServeur then
- Begin
- if pos('"',ligne) <> 0 then begin
- ligne := copy(ligne,pos('"',ligne),length(ligne));
- if pos('"',ligne) <> 0 then ligne := copy(ligne,pos('"',ligne),length(ligne));
- end else ligne := copy(ligne,Length(baliseserveur)+1,length(ligne));
- Serveur := ligne ;
- end;
- if copy(Ligne,1,length(BaliseTetris)) = BaliseTetris then
- Begin
- if pos('"',ligne) <> 0 then begin
- ligne := copy(ligne,pos('"',ligne),length(ligne));
- if pos('"',ligne) <> 0 then ligne := copy(ligne,pos('"',ligne),length(ligne));
- end else ligne := copy(ligne,Length(BaliseTetris)+1,length(ligne));
- TetrisDir := ligne ;
- end;
- if copy(Ligne,1,length(BaliseVersion)) = BaliseVersion then
- Begin
- if pos('"',ligne) <> 0 then begin
- ligne := copy(ligne,pos('"',ligne),length(ligne));
- if pos('"',ligne) <> 0 then ligne := copy(ligne,pos('"',ligne),length(ligne));
- end else ligne := copy(ligne,Length(BaliseVersion)+1,length(ligne));
- TetrisWIndowText := ligne ;
- end;
- end;
- end;
- {Proc LoadParams}
- function Test_Edit(hWnd: integer; lParam: integer): boolean; stdcall;
- var
- Classe : array[0..250] of Char;
- begin
- result := true;
- GetClassName(hWnd,Classe,SizeOf(Classe));
- if Classe = IPserveurClass then begin
- IPserveurHandle := hWnd;
- result := not IsWindowVisible(hWnd);
- end; //Cette Function Callback n'identifiera
- //Que le composant Tedit de l'adresse du serveur.
- end;
- {Func CallBack Test_Edit}
- function Test_Btn(hWnd: integer; lParam: integer): boolean; stdcall;
- var
- Text : array[0..250] of Char;
- begin
- result := true;
- GetWindowText(hWnd,text,SizeOf(text));
- if Text = ConnectBOutonTExt then begin
- ConnectBOutonHandle := hWnd;
- result := not IsWindowVisible(hWnd);
- end; //Cette Function Callback n'identifiera
- //Que le composant Tbouton de l'adresse du serveur.
- end;
- {Func CallBack Test_Btn}
- Procedure EnvoyerText(Handle : integer;Text : string);
- begin
- SendMessage(Handle,WM_SetText,0, integer(Pchar(text))); //Cette procedure Ajoute un text particulier
- end; //a un compo donné.
- {Proc EnvoyerText}
- Procedure Cliquer(Handle : integer);
- begin
- SendMessage(Handle,WM_LbuttonDown, MK_LBUTTON, 0); //cette serie de message assure un clique
- SendMessage(Handle,WM_LbuttonUp, MK_LBUTTON , 0);
- end;
- {Proc Cliquer}
- {((((((((((((((((((((((((((((Demarrage Du PROGRAMME))))))))))))))))))))))))) }
- begin
- {((((((((((((((((((((((((((((Demarrage Du PROGRAMME))))))))))))))))))))))))) }
- {Codes du programme}
- loadParams;
- if TestTetrisApp = -1 then begin
- MessageBox(0,Pchar(erreur_title),Pchar(erreur_text),0);
- exit;
- end;
- Shellexecute(0,'Open',Pchar(TetrisDir),'','',0); //Lancement de Tetris
- TimeCount := 0;
- While (findwindow(nil,Pchar(TetrisWIndowText)) = 0) do //attente de chargement de tetris
- Begin sleep(500);inc(TimeCount);if (TimeCount = Timeout) then exit; end;
- TetrisMainHandle := findwindow(nil,Pchar(TetrisWIndowText)); //fenetre principale
- While (findwindowEx(TetrisMainHandle,0,nil,Pchar(ClientSettingsText)) = 0) do //attente de chargement de tetris
- Begin sleep(500);inc(TimeCount);if (TimeCount = Timeout) then exit; end;
- ClientSettingshandle := findwindowEx(TetrisMainHandle,0,nil,Pchar(ClientSettingsText)); //volet connection
- DialogBoutonhandle := findwindowEx(TetrisMainHandle,0,nil,Pchar(DialogBoutonText)); //volet connection
- cliquer(ClientSettingshandle); //active le volet de connection
- sleep(200);
- EnumchildWindows(ZeldaMainHandle,@Test_Edit,0); //va reperer le Tedit a l'aide d'un enum
- if IPserveurHandle <> 0 then
- EnvoyerText(IPserveurHandle,Serveur) //ajoute le text au Tedit
- Else Exit;
- EnumchildWindows(TetrisMainHandle,@Test_Btn,0); //va reperer le Bouton a l'aide d'un enum
- if ConnectBOutonHandle <> 0 then
- cliquer(ConnectBOutonHandle) //clique sur le bouton Connect
- Else Exit;
- cliquer(DialogBoutonhandle);
- SetWindowText(TetrisMainHandle,Pchar(TetrisWIndowText+' Launch By Bodman'));
- end.
|
Tu peus le modifier à volonté ---------------
En theorie la pratique est égale a la théorie, en pratique ce n'est pas le cas.
|