1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| procedure TFormMain.DemarrerWinMine;
var i:integer;
begin
//On cherche si démineur est déjà ouvert
//(on récupère son Handle de fenètre au passage)
WinMineHandle:=FindWindow(nil, PChar(WinMineWindowTitle));
//si oui, on le ferme pour mettre à jour les scores
if WinMineHandle<>0
then begin
FermerApplication(WinMineHandle);
UpdateScores;
end;
ModeTriche:=False;
{ Mise à zéro de la structure StartInfo }
FillChar(StartInfo,SizeOf(StartInfo),#0);
{ Seule la taille est renseignée, toutes les autres options }
{ laissées à zéro prendront les valeurs par défaut }
StartInfo.cb := SizeOf(StartInfo);
{ Lancement de la ligne de commande }
CreateProcess(Nil, '"winmine.exe"', Nil, Nil, False,
0, Nil, Nil, StartInfo,ProcessInfo);
//Attend que démineur soit lancé
Sleep(1000);
//on récupère le Handle sur la fenètre du démineur
WinMineHandle:=FindWindow(nil, PChar(WinMineWindowTitle));
//Activation/desactivation du mode triche ???
if ((RadioGroupTriche.ItemIndex=0) and ModeTriche) then ActiveTriche;
if ((RadioGroupTriche.ItemIndex=1) and (not ModeTriche)) then ActiveTriche;
//on active la fenètre pour lui envoyer des codes touche
ActiverFenetre(WinMineHandle);
//on choisi le niveau = nouvelle partie
//on ouvre le menu du démineur
SimulateKeystroke(VK_MENU,0);
//on descend dedans jusqu'à trouver le niveau souhaité
for i:=1 to RadioGroupNiveau.ItemIndex+2 do
SimulateKeystroke(VK_DOWN,0);
//on valide
SimulateKeystroke(VK_RETURN,0);
//Attend que démineur soit prêt :
Sleep(1000);
end; |
Partager