COMPOSANT CONSOLEIOHANDLER (ENVOYEZ UNE COMMANDE À UN EXECUTABLE "CONSOLE" WINDO
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009
-
11 avril 2006 à 17:23
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015
-
16 janv. 2010 à 09:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 16 janv. 2010 à 09:20
d'où ma note
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDernière intervention 5 février 2015 16 janv. 2010 à 09:17
Bonjour,
Un zéro pointé pour pompage d'un code ancien que l'on trouve sur tous les sites parlant de Delphi
runindos également se trouve dans un livre édition eyrolles de 2002
on le trouvait également avant 2001 traduit du langage C vers langage Delphi
donc.. un zéro pointé !
(merci d'enlever "initié" et de ne pas se citer comme créateur je rappelle que le plagia est condamnable et qu'il faut payer les droits d'auteur surtout quand ça été édité anciennement sous Copyright comme dans le cas présent)
cs_shining
Messages postés304Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention10 mars 2012 17 nov. 2006 à 12:37
Tout d'abord bonjour à tous et désolé pour le retard, en ce moment j'ai très peu de temps devant moi pour faire des mises à jour rapidement !!,
flo160fr bonne idée mais ce n'est pas le but 1er de ce composant !!
mounjetado en principe avec cette mise à jour tu ne devrais pas trop avoir de problème il suffit de suivre l'exemple de la demo, sinon il faudrait un peu plus d'explication quant à la commande envoyé ainsi que le paramètre et programme, j'ai cru comprendre que tu avais developper ta propre Application console ?!?, dans ce cas il ne faut pas oublié que la sortie de la fenêtre console se gère avec la fonction WriteLn() voir l'aide de Delphi
jace1975 le problème de l'affichage est résolu
@+
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 20071 16 nov. 2006 à 23:36
salut,
Commentaire un peu en retard , mais comme j'ecrit un petit interpréteur de commande en ce moment je me suis intéressé à ton code. franchement je te conseille et à ceux aussi qui liront le message par la suite d'utiliser la fonction ci-dessous qui marche vraiment bien car la tienne connait quelque limite génante , genre les rapports de pings incomplets, etc ... :
procedure RunDosInMemo(DosApp: string; AMemo: Trichedit);
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;
cs_mounjetado
Messages postés66Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 4 août 2008 16 nov. 2006 à 10:50
bonjour,
j'ai fait une appli console pour prendre des mesures, et je voudrais maintenant récupérer mes mesures en temps réel pour les traiter. aussi ton prog m'intéresse, et je viens de télécharger ton source mais depuis j'essaie désespérément de le faire fonctionner... ou bien j'ai de sérieuses lacunes, ou alors ça manque d'infos! pour ma part, je crois qu'il y a des deux. je suis autodidacte, donc j'ignore si mon appli est viable et je ne connais pas les commandes dos en utilisant des lignes de commande... aurais-tu un tuto sur ce sujet?
merci
flo160fr
Messages postés157Date d'inscriptiondimanche 19 novembre 2000StatutMembreDernière intervention14 avril 2009 11 avril 2006 à 17:23
Ca serai bien de pouvoir utiliser la totalité des commandes dos avec ton prog... et pas juste ouvrir des applications consoles...
16 janv. 2010 à 09:20
16 janv. 2010 à 09:17
Un zéro pointé pour pompage d'un code ancien que l'on trouve sur tous les sites parlant de Delphi
runindos également se trouve dans un livre édition eyrolles de 2002
on le trouvait également avant 2001 traduit du langage C vers langage Delphi
donc.. un zéro pointé !
(merci d'enlever "initié" et de ne pas se citer comme créateur je rappelle que le plagia est condamnable et qu'il faut payer les droits d'auteur surtout quand ça été édité anciennement sous Copyright comme dans le cas présent)
17 nov. 2006 à 12:37
flo160fr bonne idée mais ce n'est pas le but 1er de ce composant !!
mounjetado en principe avec cette mise à jour tu ne devrais pas trop avoir de problème il suffit de suivre l'exemple de la demo, sinon il faudrait un peu plus d'explication quant à la commande envoyé ainsi que le paramètre et programme, j'ai cru comprendre que tu avais developper ta propre Application console ?!?, dans ce cas il ne faut pas oublié que la sortie de la fenêtre console se gère avec la fonction WriteLn() voir l'aide de Delphi
jace1975 le problème de l'affichage est résolu
@+
16 nov. 2006 à 23:36
Commentaire un peu en retard , mais comme j'ecrit un petit interpréteur de commande en ce moment je me suis intéressé à ton code. franchement je te conseille et à ceux aussi qui liront le message par la suite d'utiliser la fonction ci-dessous qui marche vraiment bien car la tienne connait quelque limite génante , genre les rapports de pings incomplets, etc ... :
procedure RunDosInMemo(DosApp: string; AMemo: Trichedit);
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;
tschussss.....
16 nov. 2006 à 10:50
j'ai fait une appli console pour prendre des mesures, et je voudrais maintenant récupérer mes mesures en temps réel pour les traiter. aussi ton prog m'intéresse, et je viens de télécharger ton source mais depuis j'essaie désespérément de le faire fonctionner... ou bien j'ai de sérieuses lacunes, ou alors ça manque d'infos! pour ma part, je crois qu'il y a des deux. je suis autodidacte, donc j'ignore si mon appli est viable et je ne connais pas les commandes dos en utilisant des lignes de commande... aurais-tu un tuto sur ce sujet?
merci
11 avril 2006 à 17:23