Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
ВнизСвязь кнопки с .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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c