+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Comando DOS

  1. #1
    L'avatar di camaleonteplus
    camaleonteplus non  in linea Scolaretto
    Ho un problema nel far funzionare questo codice:

    procedure TForm1.FondiClick(Sender: TObject);
     begin
     WinExec('Command.com /c copy/b prova.jpg + prova.zip FusePlus.jpg',0);
     end;
    
    Come lo vedete sopra funziona nasconde un file zip dietro una immagine, ma come lo vedete sotto no, mi lampeggia il cursore di DOS senza fare niente.

    procedure TForm1.FondiClick(Sender: TObject);
    var
     s:string;
    begin
     s:='Command.com /c copy/b '+JPG2.Text+'+'+FULL2.Text+' fuse.jpg';
     WinExec(pchar(s),0);
     end;
    

  2. Non che JPG2.Text o FULL2.Text contengono spazi? Hai provato a racchiudere i valori tra doppi apici?

    Per la funzione che usi obsoleta. Dovresti usare CreateProcess e aspettare il termine della procedura:

    codice testato:
    function CreateProcessAndWait(Process: string; Parameters: string; var dwExitCode: DWORD): boolean;
    var
      SUInfo: TstartupInfo;
      ProcInfo: TProcessInformation;
      bExitCodeOk: boolean;
    begin
      FillChar(SUInfo, SizeOf(SUInfo), #0);
      with SUInfo do
      begin
        cb:=SizeOf(SUInfo);
        dwFlags:=STARTF_USESHOWWINDOW;
        wShowWindow:= SW_MINIMIZE;
      end;
    
      Result := CreateProcess(NIL,Pchar(Process + ' ' + Parameters),
                              NIL,NIL,FALSE,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,NIL,
                              SUInfo,ProcInfo);
      if Result then
      begin
        WaitforSingleObject(ProcInfo.hprocess,INFINITE);
        bExitCodeOk := GetExitCodeProcess(ProcInfo.hProcess, dwExitCode);
        if not(bExitCodeOk) then
          result := false
        else
          result := dwExitCode = 0;
      end;
    end;
    
    codice NON testato:
    procedure TForm1.FondiClick(Sender: TObject);
    var
      ExitCode: DWORD;
    begin
      if not(CreateProcessAndWait('Command.com /c copy/b "'+JPG2.Text+'" + "'+FULL2.Text+'" fuse.jpg' , '', ExitCode)) then
        raise Exception.Create('ERRORE');
    end;
    
    Ultima modifica di cyberlaundry; 07-04-2009 15:37 
    ℹ️ Leggi di pi su cyberlaundry ...

  3. #3
    L'avatar di camaleonteplus
    camaleonteplus non  in linea Scolaretto
    vero che obsoleto ma l'unico che mi pu dare il risultato che cerco il MS-DOS con il secondo codice che quello che pi mi interessa mi da questo errore:
    [Error] Fuse.pas(56): Undeclared identifier: 'CreateProcessAndWait'

  4. Essendo una funzione non relativa ad alcun oggetto, devi scrivere la funzione PRIMA di utilizzarla.
    Quindi: metti la dichiarazione di "function CreateProcessAndWait" ALL'INIZIO del codice, e solo nelle righe successive puoi usarla.
    ℹ️ Leggi di pi su cyberlaundry ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Comando vb 08
    Da grelza nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 27-08-2009, 22:14
  2. comando dos da vb.net
    Da TeGlider nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 12-04-2009, 19:17
  3. Comando Shell
    Da djremix nel forum Visual Basic .Net
    Risposte: 19
    Ultimo Post: 19-08-2008, 00:23
  4. Comando IIF...
    Da Morpheus80 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 15-11-2005, 01:06
  5. comando ms dos..
    Da stwefano nel forum Microsoft Windows
    Risposte: 8
    Ultimo Post: 21-02-2005, 17:24