На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Програмеры помогите спрятать одну прогу другой(моей)
    Вот такую прячущую прогу и надо сделать - чтобы по указанному Title нужной проги она прятала ее по типу RegisterServiceProcess и убирала у окна атрибут OnTop а также ставила Visible:=false
      Вобщем я имел ввиду что имеется чужая(не моя)прога уже давно скомпилированная и при запуске она висит как AlwaysOnTop и ее видно и на TaskBar'e и в списке задач(ctrl+alt+del)
      Надо ее убрать из этих мест и вообще спрятать ее окно ДРУГОЙ ПРОГОЙ - вот мне надо сделать такую ПРОГУ на дельфи - ИМХО надо юзать EnumWindows (АПИ)
        не обязхательно EntmWindow
        подойдет и FindWindow.
        А потом просто надйенному окну посылаешь
        ShowWindow(hwnd,SW_HIDE)
        вроде так.
        а можно ли для этого RegisterServiceProcess прикрутить не знаю, возможно, унего по моему первый параметр тоже hwnd окна, которое нужно спрятать, хотя ожметь быть это и ID процесса... в таком случае теюе будет уже сложенее, нужно по окну восстановить процесс и его упрятать...
          Я так понял, окно ее ты видишь. Вот тебе код, когда стерминатишь, ищи где лежит сама и удаляй!!! Проще всего определить путь к EXE_шнику через ToolHelp(с ним разбирайся сам, мне лень это сейчас тебе писать).
          //------------------------------------------
          unit Unit1;
          interface
          uses
          Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
          ComCtrls, StdCtrls;
          type
          TForm1 = class(TForm)
          Button1: TButton;
          ListView: TListView;
          Button2: TButton;
          procedure Button1Click(Sender: TObject);
          procedure Button2Click(Sender: TObject);
          private
          { Private declarations }
          public
          { Public declarations }
          end;
          var
          Form1: TForm1;
          m: array[0..255] of HWND;
          I: Integer;
          implementation
          {$R *.DFM}
          procedure TForm1.Button1Click(Sender: TObject);
          var hTmp: HWND;
          wText: PChar;
          begin
          I := 0;
          hTmp := FindWindow(nil, nil);
          m[I] := hTmp;
          with ListView.Items.Add do
          begin
          Caption := IntToStr(hTmp);
          GetWindowText(hTmp, wText, 255);
          SubItems.Add(wText);
          end;
          repeat
          hTmp := GetNextWindow(hTmp, GW_HWNDNEXT);
          m[I] := hTmp;
          with ListView.Items.Add do
          begin
          Caption := IntToStr(hTmp);
          GetWindowText(hTmp, wText, 255);
          SubItems.Add(wText);
          end;
          until (hTmp = 0);
          // Тут находишь окно этой проги
          end;
          procedure TForm1.Button2Click(Sender: TObject);
          var hTmp: HWND;
          ID: DWORD;
          hPr: THandle;
          begin
          If ListView.SelCount = 0 then
          Exit;
          hTmp := StrToInt(ListView.Selected.Caption);
          GetWindowThreadProcessID(hTmp, @ID);
          hPr := OpenProcess(PROCESS_TERMINATE, False, ID);
          TerminateProcess(hPr, 0);

          end;
          end.
          //------------------------------------------
          На форме - ListView c 2-мя колумсами и стилем vsReport.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0421 ]   [ 15 queries used ]   [ Generated: 21.05.24, 03:37 GMT ]