Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.12.2012, 12:53
Mitiay Mitiay вне форума
Новичок
 
Регистрация: 08.10.2009
Сообщения: 68
Репутация: 10
По умолчанию Если программа запущена то...

В общем хочу сделать прикол для жены)))Суть заключается в том,если программа запущена то вылетает сообщение...Ребята помогли с кодом НО программа работает не так как хотелось бы.Если я ключаю игру и компилирую вылетает 100000 сообщений.Если игра не влючена то вообще ничего не вылетает.Хотелось бы сделать так чтобы программа "ждала" допустим .Открыл программу ее не видно нигде.Жена открыла игру вылетело сообщение,закрыла,опять открыла опять вылетело сообщение...ПОМОГИТЕ!!!

Код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, tlhelp32, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);

 private
 { Private declarations }
 public
 { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function processExists(exeFileName: string): Boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := False;
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeF  ile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if processExists('game.exe') then
ShowMessage('Процесс запущен');
end;

end.
Ответить с цитированием
  #2  
Старый 04.12.2012, 17:17
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

добавь после строки
var
Form1: TForm1;

флаг который будет меняться если сообщение показалось
Код:
var
 Form1: TForm1;
 showed:boolean:=false;
и измени код в Timer1Timer
Код:
if processExists('game.exe') then
   begin
   if not(showed) then
      begin
	ShowMessage('Процесс запущен');
	showed:=true;
      end;
   end
   else if showed 
         then showed:=false;
код на работоспособность не проверял)
Ответить с цитированием
  #3  
Старый 05.12.2012, 00:52
Mitiay Mitiay вне форума
Новичок
 
Регистрация: 08.10.2009
Сообщения: 68
Репутация: 10
По умолчанию

Работает!только вылетает много сообщений и когда откомпилировал в ехе вообще не работает(((
Ответить с цитированием
  #4  
Старый 05.12.2012, 03:34
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Mitiay
Работает!только вылетает много сообщений (((
Поменяй местами эти две строчки:
Код:
    ShowMessage('Процесс запущен');
    showed:=true;
У тебя в таймере какой интервал?
Цитата:
Сообщение от Mitiay
и когда откомпилировал в ехе вообще не работает
Всё работало пока не откомпилировал в exe? Это как так?
Ответить с цитированием
  #5  
Старый 05.12.2012, 12:06
Mitiay Mitiay вне форума
Новичок
 
Регистрация: 08.10.2009
Сообщения: 68
Репутация: 10
По умолчанию

Когда запускаю в делфе,открываю игру вылетает сообщение,закрываю,открываю опять вылетает.Откомпилировал в ехе запустил,открыл игру вылетело сообщение,закрыл открыл опять ничего не вылетело.
Ответить с цитированием
  #6  
Старый 05.12.2012, 19:22
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Mitiay
Когда запускаю в делфе,открываю игру вылетает сообщение,закрываю,открываю опять вылетает.Откомпилировал в ехе запустил,открыл игру вылетело сообщение,закрыл открыл опять ничего не вылетело.
Запустил ты exe-шник из под Delphi или из проводника - от этого не зависит. А зависит от того закрыл ли ты окно с сообщением перед тем как повторно запустить игру (ну и ещё от величины интервала в таймере).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025