Задать вопрос
Ответы пользователя по тегу Delphi
  • Почему CreateProcess не всегда правильно работает?

    shineblu
    @shineblu
    Добрый день,

    Так у Вас все останавливается на WaitforSingleObject(hProcess, INFINITE); после того как Вы вызвали функцию первый раз. Второе приложение не будет запущено пока не завершится первое.

    Как дополнение, попробуйте эту функцию:

    function ExecuteApplication(ACmd: string; AWaitForTerminate: boolean=false; AHideWindow: boolean = false): THandle;
    var
      si: STARTUPINFO;
      pi: PROCESS_INFORMATION;
    begin
      Result:=0;
      try
          ZeroMemory(@si,sizeof(si));
          si.cb:=SizeOf(si);
          si.dwFlags := STARTF_USESHOWWINDOW;
          if AHideWindow then si.wShowWindow := SW_HIDE else si.wShowWindow := SW_SHOW;
          if not CreateProcess(nil, PChar(ACmd), nil, nil, False, 0, nil, nil, si, pi)
          then begin
              Exit;
          end;
          Result:=pi.hProcess;
          if AWaitForTerminate
          then begin
              WaitForSingleObject(pi.hProcess, INFINITE );
              CloseHandle(pi.hProcess);
              CloseHandle(pi.hThread);
          end;
      except
      end;
    end;


    И для отладки - проверяйте что содержится в переменной ACmd. Т.е. если Ваш путь к EXEшке и аргументы содержат пробелы, то путь к приложению и каждый такой параметр должны быть заключены в кавычки

    Успехов!
    Ответ написан
    Комментировать
  • Как работать с https в delphi 7?

    shineblu
    @shineblu
    Добрый день,

    Используйте Indy. Там все просто, см. ниже. Ну и нужно будет с проектом таскать библиотеки ssleay32.dll и libeay32.dll

    uses
       {...}, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdHTTP, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL;
    
    {...}
    var
        IdHTTP1: TIdHTTP;
        IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
        response: WideString;
    {...}
    
    begin
          {...}
         // create HTTP client with SSL support
        IdHTTP1:=TIdHTTP.Create(nil);
        IdSSLIOHandlerSocket1:=TIdSSLIOHandlerSocket.Create(IdHTTP1);
        IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1;
        IdHTTP1.IOHandler:=IdSSLIOHandlerSocket1;
        
        response:=IdHTTP1.Post('https://...');
        {...}
    end;


    По этой ссылке сможете скачать нужные SSL библиотеки: rusfolder.com/39890237. Залил для Вас. Распакуйте и положите в папку с проектом

    Успехов!
    Ответ написан