Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

Связь кнопки с .exe файлом   Найти похожие ветки 

 
alexandr1045 ©   (2003-09-16 22:40) [0]

У меня возникла такая проблема. Мне необходимо сделать так, чтобы при нажатии кнопки (button1) запускалось внешнее приложение ( .exe файл), т.е. сделать ссылку на него. Кто знает, помогите пожалуйста, очень нужно.


 
Palladin ©   (2003-09-16 22:45) [1]

мда... а в yandex поискать пробовал?


 
Andy BitOff   (2003-09-16 23:07) [2]

ShellExecute(Application.Handle, nil, "notepad.exe", nil, nil, SW_SHOWNORMAL);


 
_DIIma   (2003-09-17 01:31) [3]

Palladin © (16.09.03 22:45) [1]

Ну если тебе отвечать в падлу, или ты не знаешь ответа, то сиди и молчи, может человек ни разу этого не делал, а задачу в короткие сроки сделать надо, так помоги, а не постобрешством занимайся.


 
Palladin ©   (2003-09-17 09:40) [4]


> _DIIma (17.09.03 01:31) [3]

А ты кто?


 
Думкин ©   (2003-09-17 09:42) [5]

> _DIIma (17.09.03 01:31)
Либо сроки определены неверно, либо.....


 
mrcat ©   (2003-09-17 09:48) [6]

_DIIma (17.09.03 01:31)

Чудо, если тебе не в падлу --- ответь сам.


 
DVM ©   (2003-09-17 09:50) [7]

WinExec()
ShellExecute()
CreateProcess()

кого хочешь выбирай.


 
Palladin ©   (2003-09-17 09:52) [8]


> Ну если тебе отвечать в падлу

Мне не в падлу и я ответил, ответ принесет человеку горадо больше пользы чем Andy BitOff (16.09.03 23:07) [2]


> задачу в короткие сроки сделать надо,

Думаешь попытка поиска в яндексе займет долгие годы? Или у тебя как то отношени с поисковыми системами не сложилась, в результате поиск по определенной комбинации слов у тебя занимает больше недели и ты решил судить всех людей по себе?


> а не постобрешством занимайся

Ты свой пост почитай... ни слова по теме...


 
Илайдж ©   (2003-09-17 10:42) [9]

Позволю себе предложить то, чем пользуемся мы у себя на предприятии...
Собсно, если у кого есть замечания - милости просим...


unit ModuleMgr;

interface

uses ...

function Mod_CheckOpen (ModuleCode: TModuleCode): Boolean;
function Mod_CloseModule(ModuleCode: TModuleCode): Boolean;
procedure Mod_OpenModule (ModuleCode: TModuleCode);

implementation

{Mod_CheckOpen - Проверить, запущен ли нужный модуль}

function Mod_CheckOpen(ModuleCode: TModuleCode): Boolean;
var
hWnd: THandle;
begin
hWnd := FindWindow(PChar(ModuleClassNames[Integer(ModuleCode)]), nil);
Result := (hWnd <> 0);
end;

{ Mod_OpenModule Открыть модуль (фокусировать существующую программу или запустить новую) }
procedure Mod_OpenModule (ModuleCode: TModuleCode);
var
hWnd: THandle;
begin
hWnd := FindWindow(PChar(ModuleClassNames[Integer(ModuleCode)]), nil);

if (hWnd <> 0) then
begin
ShowWindow(hWnd, SW_SHOW);
SetForegroundWindow(hWnd);
end
else begin
WinExec (PChar(".\" + ModuleNames[Integer(ModuleCode)] + ".exe "), SW_SHOW);
end;
end;

{ Mod_CloseModule Закрыть запущенный модуль.
Возвращает True, если модуль был найден и (вероятно) закрыт. }
function Mod_CloseModule(ModuleCode: TModuleCode): Boolean;
var
hWnd: THandle;
begin
hWnd := FindWindow(PChar(ModuleClassNames[Integer(ModuleCode)]), nil);
Result := (hWnd <> 0);
if (hWnd <> 0) then
begin
SendMessage (hWnd, WM_CLOSE, 0, 0);
end;
end;
end.


Определения...

type
TModuleCode = (modMain, modDummy);
const
NumModules = Integer(modDummy);
ModuleNames: array [0..NumModules-1] of String = ("main");
ModuleClassNames: array [0..NumModules-1] of String = ("TfmMain");


Процедура, которая вешается на кнопку

procedure TForm1.RunModule(Sender: TObject);
var
ModuleCode: TModuleCode;
begin
// вешается на кнопку через инспектор объектов
// ВАЖНО! На кнопке должен быть установлен Tag, соответствующий
// модулю в списке TModuleCode
ModuleCode := TModuleCode(TBitBtn(Sender).Tag);
Mod_OpenModule(ModuleCode)
end;


Вроде бы ничего не забыл...


 
Palladin ©   (2003-09-17 10:47) [10]

Пользователь открыл Excel, позже Ваша программа вместо того что бы открыть копию использовала уже запущенное приложение и отработав закрыла его, не думаю что это понравится пользователю.

Впрочем немножко доработав от этого можно избавится.


 
Илайдж ©   (2003-09-17 10:56) [11]

Забыл написать: код выше предназначен для запуска приложений, написанных нами же.
Т.е пользователи запускают Excel и ему подобные приложения самостоятельно.
Поскольку список приложений уже перевалил за двадцать, возникла необходимость избавиться от массы иконок и уместить все в одном "главном" приложении.
На самом деле, там система сложнее, идет расстановка прав пользователей на кнопки, т.е. каждый запускает приложения, которые предназначены для него и много еще чего, я сюда сбросил так сказать основу...Дорабатывать на данный момент нет смысла, ибо этот код отвечает текущим потребностям, но за замечание конечно спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.09.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
14-96349
Сатир
2003-09-09 17:55
2003.09.29
Помогите найти файлик


1-96245
Stalker780
2003-09-17 12:09
2003.09.29
MDI окно из DLL


3-96116
P0tia
2003-09-09 10:21
2003.09.29
Как узнать количество листов в Excel


1-96168
scorpi
2003-09-16 12:54
2003.09.29
События объекта


3-96080
denis24
2003-09-10 17:05
2003.09.29
adoquery.sql