Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-96150
DelphiM
2003-09-06 23:23
2003.09.29
Grid


14-96351
Filat
2003-09-09 19:04
2003.09.29
Ну ооооччччень надо! :)))


1-96196
AndreySE
2003-09-16 09:36
2003.09.29
проблема с сервисом


1-96253
stone
2003-09-17 15:14
2003.09.29
Заполнить пробелами


14-96371
Igorek
2003-09-08 16:01
2003.09.29
3 вопроса не флеймерам и не флудерам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский