Inorporer un programme actif [Résolu/Fermé]

cs_wyckit 24 Messages postés samedi 14 juin 2003Date d'inscription 25 octobre 2005 Dernière intervention - 2 févr. 2005 à 19:27 - Dernière réponse : cs_wyckit 24 Messages postés samedi 14 juin 2003Date d'inscription 25 octobre 2005 Dernière intervention
- 3 févr. 2005 à 09:14
Bonjour à tous !

Voila, je ne savait pas trop quoi metre en titre, j'ai mis ce qui me paraissait le plus évocateur et le plus court possible lol.
Donc voila, en fait je voudrai savoir s'il est possible d'inclure un programme tierce, dans une fiche avec Delphi ...?
J'ai testé OLE, mais il lance l'executable à part. Ce que je voudrai tres précisement, c'est pouvoir utiliser cmd.exe depuis mon programme, sans que cmd.exe ne se lance parallelement à mon profgramme ... à vraie dire je ne sait pas si c'est possible.

Donc voila, si quelqu'un sait comment faire ca ...

the rastaman's vibration is positive !!!
Afficher la suite 

6 réponses

Meilleure réponse
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 2 févr. 2005 à 22:23
3
Merci
Hello,



Il y a un compo qui permet de faire toutes les fonctions dos me semble
t'il. Fais une recherche sur le site ou sinon sur www.torry.net

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.

Merci jmp77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Commenter la réponse de jmp77
Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 2 févr. 2005 à 23:47
3
Merci
Ok, je pense avoir compris. La réponse a déjà été donnée sur le forum : 182840 http://www.delphifr.com/forum.v2.aspx?ID=182840

En clair, tu veux rediriger la sortie standard vers ton application
 procedure  RunDosInMemo(DosApp: string; AMemo: TMemo);
const
  ReadBuffer  = 2400;
var
  Security: TSecurityAttributes;
  ReadPipe, WritePipe: THandle;
  start: TStartUpInfo;
  ProcessInfo: TProcessInformation;
  Buffer: Pchar;
  BytesRead: DWord;
  Apprunning: DWord;
begin
  with Security do
  begin
    nlength :=  SizeOf(TSecurityAttributes);
    binherithandle := true;
    lpsecuritydescriptor :=  nil ;
  end;
  if Createpipe(ReadPipe, WritePipe,
    @Security, 0) then
  begin
    Buffer : = AllocMem(ReadBuffer + 1);
    FillChar(Start, Sizeof(Start), #0);
    start.cb :=  SizeOf(start);
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES +
      STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;

     if  CreateProcess(nil,
      PChar(DosApp),
      @Security,
      @Security,
      true,
      NORMAL_PRIORITY_CLASS,
      nil,
      nil,
      start,
      ProcessInfo) then
    begin
      repeat
        Apprunning : = WaitForSingleObject
          (ProcessInfo.hProcess, 100);
        Application.ProcessMessages;
      until (Apprunning <> WAIT_TIMEOUT);
      repeat
        BytesRead :=  0;
        ReadFile(ReadPipe, Buffer[0],
          ReadBuffer, BytesRead,  nil );
        Buffer[BytesRead] : = #0;
        OemToAnsi(Buffer, Buffer);
        AMemo.Text := AMemo.text + string(Buffer);
      until (BytesRead < ReadBuffer);
    end;
    FreeMem(Buffer);
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ReadPipe);
    CloseHandle(WritePipe);
  end;
end;

procedure TForm1.btnCaptureDosWindowClick(Sender: TObject);
begin
  RunDosInMemo('command.com /C dir c:', Memo1);
end;

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 2 févr. 2005 à 23:06
0
Merci
"je voudrai savoir s'il est possible d'inclure un programme tierce, dans une fiche avec Delphi ...?"

Voir l'inclusion de fichiers dans les ressources de ton exécutable.

"J'ai testé OLE, mais il lance l'executable à part"

Tu ne peux pas changer les fondements d'OLE.

"Ce que je voudrai tres précisement, c'est pouvoir utiliser cmd.exe depuis mon programme, sans que cmd.exe ne se lance parallelement à mon profgramme "

Le fait d'appeler cmd.exe provoque déjà l'apparition d'une fenête en mode console.
Si c'est pour lancer une appli sans passer par cmd, alors tournes-toi vers l'utilisation de ShellExecute. Cette fonction est tellement utilisée dans les sources qu'il suffit de faire une recherche sur son nom.

"à vraie dire je ne sait pas si c'est possible"
Ben...c'est peut-être pour ça que tu poses la question, non ?

Et si tu nous disais, tout simplement, quel genre d'application tu souhaites lancer (application DOS ou Win32, voire un fichier batch) ?

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
Commenter la réponse de cs_Delphiprog
cs_wyckit 24 Messages postés samedi 14 juin 2003Date d'inscription 25 octobre 2005 Dernière intervention - 2 févr. 2005 à 23:25
0
Merci
merci jmp77, je pense que ca sera ma solution finale :)

Delphiprog, les fichier .res je connais, ce que je veu, c'est executer cmd.exe dans ma fiche. en gros, je veu executer cmd.exe via mon programme, mais en fesant en sorte qu'il s'execute dans ma fiche, pas à coté. je sait c'est pas très clair, mais j'ai pas mieu ...
je veu executer cmd.exe comme si je fesait un include de cmd.exe depuis mon programme :) c'est plus clair ? lol
car, quand on fait un include en php, le site inclus est affiché dans le site incluant, comme une frame. ben moi je veu fair pareil, mais avec cmd.exe comme inclu, et ma fiche comme incluant. :p

the rastaman's vibration is positive !!!
Commenter la réponse de cs_wyckit
emmanuelgo 62 Messages postés vendredi 24 décembre 2004Date d'inscription 13 avril 2005 Dernière intervention - 3 févr. 2005 à 01:12
0
Merci
salut a tous...
ce code (celui donner par delphiprog) fonctionne bien mais : si il affiche bien ce que le programme dos nous renvoie, comment est-il possible de 'continuer' l'interraction : je m'explique:
je lance un programme dos ( une ligne runas /user:administrateur "Execut.exe" ,par exemple)
la console demande alors le mot de passe de l'administrateur, et je recupère bien cette demande dans mon programme delphi...
mais ensuite, comment "renvoyer" le mot de passe, entré par l'utilisateur dans l'appli delphi, dans le programme DOS???

jusqu'ici je n'ai pas trouvé de réponse...si quelqu'un a une idée....
Commenter la réponse de emmanuelgo
cs_wyckit 24 Messages postés samedi 14 juin 2003Date d'inscription 25 octobre 2005 Dernière intervention - 3 févr. 2005 à 09:14
0
Merci
Vu sous cet angle :)

gro merci DelphiProg !! :D

the rastaman's vibration is positive !!!
Commenter la réponse de cs_wyckit

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.