Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

СообЧА. Программирование на Delphi


Служба Рассылок Subscribe.Ru
Subscribe.Ru : СообЧА. Программирование на Delphi
Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Я обновляю свой сайт, и могу занятся вашим... за символическую плату(договоримся)



 

 

Мир Delphi

PixelSoftware (у нас архив рассылки+файлы примеры)

 

 

В новом сезоне - новый дизайн!

 

 

СообЧа - Программирование на Delphi, 

Чайники и кипятильники - объединяйтесь!  (не Ленин ,но тоже хорошо звучит)

 

(С) 2000 - 2001COOLer

 

Дизайн: Pixel Web Lab

 
   Настоящие собаки ЕДЯТ МЯСО! А НАСТОЯЩЕЕ МЯСО ЕСТЬ ТОЛЬКО В Quake3 !!!  

Оглавление

 

В этом выпуске:

 

Рассылка СообЧА

 
     

Статьи в газете:

В сети:

Все желающие могут заказать у меня программу пример, к статьям этой рассылки.

 !

ВНИМАНИЕ: ЗАПОМНИТЕ РАЗ И НАВСЕГДА ПРО ПРОГРАММИРОВАНИЕ В Windows200/NT

  • Надо иметь права администратора
  • Надо учесть отличия NTFS от FAT32
  • Некоторых функций в 2000-ной винде ПРОСТО НЕТ
  • Некоторые требуют ИСКЛЮЧИТЕЛЬНЫХ прав доступа, даже от админа
  • Программа написанная на 9x/ME не всегда приживается в среде 2000/NT 
  • Plug&Play организован(с точки зрения запроса имен или параметров) по другому
  • Я НЕ ПРОГРАММИРУЮ В ЭТОЙ СРЕДЕ, В СВЯЗИ С ВЫШЕПЕРЕЧИСЛЕННЫМ И ОТСУТСТВИЕМ НТ , КАК ТАКОГОГО

 
Рассылки Subscribe.Ru это стильно удобно, и информативно!
СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.

  Назад к оглавлению    
   
 

Конкурс и новости рассылки

 
 
   

Охота на VCL 

  • Нравится ли вам наша рассылка?

  • Да

    Нет

    Не успел оценить

    Если вы ищите компонент, крак к нему, или просто хороший линк, жмите сюда
      Назад к оглавлению    
       
     

    Выбор лучшего

     
     
       
    Временно недоступно.

     

     
      Назад к оглавлению    
       
     

    Запуск командной строкой...

     
     
       

    Шикарная процедура, вобщем-то работает, но я могу опечататься (проверено на Дельфи 5), я делал эту процедуру, чтобы работать с командной строкой передавая команду в виде Stringa (Pcharы замучали...).

     
        Uses Shellapi

    ....

    procedure Tform1.Cmdstring(cmd:string);

    begin

    WinExec(pchar(cmd),SW_hide) ;<<<См заметку 1
    end;

     
    Заметка :1

    Команды открытия окна и их описания :

    • SW_Hide , ваша программа открывает другую спрятав ее
    • SW_Normal, ваша программа открывает другое окно просто так.
    • SW_Open, примерно то же самое.
    • SW_Exeplore, открывается проводник, в том месте где находится этот файл

    mailto:Автор:Pixel(pixel@novgorod.net http://pixelsoft.narod.ru/ )
    ї COOLer 
    Назад к оглавлению    
       
     

    Каким образом, программным путем, можно узнать о завершении запущенной программы?

     
     
       

    16-битная версия:

     


        uses Wintypes,WinProcs,Toolhelp,Classes,Forms;

    Function WinExecAndWait(Path : string; Visibility : word) : word;
    var
    InstanceID : THandle;
    PathLen : integer;
    begin
      { Преобразуем строку в тип PChar }
    PathLen := Length(Path);
    Move(Path[1],Path[0],PathLen);
    Path[PathLen] := #00;
      { Пытаемся запустить приложение }
    InstanceID := WinExec(@Path,Visibility);
    if InstanceID < 32 then { значение меньше 32 указывает на ошибку приложения }
    WinExecAndWait := InstanceID

    else begin
    Repeat
    Application.ProcessMessages;
    until Application.Terminated or (GetModuleUsage(InstanceID) = 0);
    WinExecAndWait := 32;
    end;
    end;

     

    32-битная версия:

     


        function WinExecAndWait32(FileName:String; Visibility : integer):integer;
    var
    zAppName:array[0..512] of char;
    zCurDir:array[0..255] of char;
    WorkDir:String;
    StartupInfo:TStartupInfo;
    ProcessInfo:TProcessInformation;
    begin
    StrPCopy(zAppName,FileName);
    GetDir(0,WorkDir);
    StrPCopy(zCurDir,WorkDir);
    FillChar(StartupInfo,Sizeof(StartupInfo),#0);
    StartupInfo.cb := Sizeof(StartupInfo);

    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := Visibility;
    if not CreateProcess(nil,
    zAppName,                      { указатель командной строки }
    nil,                           { указатель на процесс атрибутов безопасности }
    nil,                           { указатель на поток атрибутов безопасности }
    false,                         { флаг родительского обработчика }
    CREATE_NEW_CONSOLE or          { флаг создания }
    NORMAL_PRIORITY_CLASS,
    nil,                           { указатель на новую среду процесса }
    nil,                           { указатель на имя текущей директории }
    StartupInfo,                   { указатель на STARTUPINFO }
    ProcessInfo) then Result := -1 { указатель на PROCESS_INF }

    else begin
    WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
    GetExitCodeProcess(ProcessInfo.hProcess,Result);
    end;
    end;

    Дополнение

     

    Письмо от читателя в СООБЧА-онлайне:

    Очень помог совет из API\Разное: "Каким образом, программным путем, можно узнать о завершении запущенной программы?". Однако хочется внести резонное исправление: вместо

     


       
    WaitforSingleObject(ProcessInfo.hProcess,INFINITE);

    лучше написать:

     


       
    while WaitforSingleObject(ProcessInfo.hProcess,200)=WAIT_TIMEOUT do
    Repaint;

    Смысл замены прост: в первом варианте главное окно ждёт завершения вызванного сообщения, не обрабатывая при этом никаких событий. Вследствие этого главное окно даже не перерисовывается, что выглядит очень некрасиво. Второй вариант исправляет этот недостаток.

     

    mailto:Автор:Pixel(pixel@novgorod.net http://pixelsoft.narod.ru/ )

     


    Zaluskiy Anton(COOLer)  и Khrapunov Kirill(Pixel)  - ведущие проекта    "Мир Delphi"



    о3он TopList RLE Banner Network

    -AdRiver-

    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу
    Рейтингуется SpyLog


    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу
    Рейтингуется SpyLog

    В избранное