Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 14:00   #1
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
Восклицание Хук на комбинацию

Такая проблема..
Есть программа, но она имеет только иконку в тулбаре и PopupMenu, нада что бы при скрытии иконки из меню можно было ее назад показать какойто комбинацией клавишь...

Слышал про Api RegisterHotKey и UnRegisterHotKey, но не знаю как их использовать

Последний раз редактировалось W0LF; 13.07.2009 в 14:10.
W0LF вне форума Ответить с цитированием
Старый 13.07.2009, 14:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ничего не понял...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2009, 14:23   #3
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

http://programmersforum.ru/showthread.php?t=57403
Приводил пример
Lime вне форума Ответить с цитированием
Старый 13.07.2009, 14:29   #4
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Lime, спс, все работает))
W0LF вне форума Ответить с цитированием
Старый 13.07.2009, 15:16   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию Сохранение текста в самом приложении (exe). Возможно ли это?

У мен постал новый вопрос (не потеме канечно, но всеже)...
Возможно ли написать текст в 2 edit'а и сохранить в самом теле exe? Без создания отдельных файлов, записей в реестре и т.д.
W0LF вне форума Ответить с цитированием
Старый 13.07.2009, 15:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Посмотри в хелпе описание функции UpdateResource
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2009, 15:38   #7
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Посмотрел, но мне это не чего не дало, так как я новичек... а тут... вообщем непонял там нечего. Мне надо сохранить текст из 2 едитов. Если не сложно можно пример?
W0LF вне форума Ответить с цитированием
Старый 13.07.2009, 16:05   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тут видишь ли какая штука. нельзя писать в запущенный файл, посему нужно сделать другой файл - хранилище ресурсов, например DLL.
Вот статья к раздумьям:
Код:
http://vsokovikov.narod.ru/New_MSDN_API/Resourse/updating_resources.htm
Ну вот скажем так можно менят ресурс другого файла:
Учитывая что ресурсы описаны так:
Код:
STRINGTABLE
{
 1, "&Yes"
 2, "&No"
 17, "&Si"
 18, "&No"
 33, "&Ja"
 34, "&Nej"
}
Код:
var pc:pchar;h:THandle;
begin
 pc:='123';
 h:=BeginUpdateResource('project1.exe',false);
 if h=NULL then RaiseLastWin32Error;
 if UpdateResource(h,RT_STRING,'1',(LANG_RUSSIAN),pc,length(pc)) then RaiseLastWin32Error;
 EndUpdateResource(h,false);
end;
А вот тот файл в котором ресурс изменен может его читать:
Код:
var pc:array[1..20] of char;h:THandle;
begin
 if LoadString(HInstance,1,@pc,20)<>0 then
 caption:=StrPas(@pc);
end;
Но я бы на твоем месте в DLL пихал строки, или еще проще в INI файлы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2009, 19:02   #9
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

да уж..)) действительно луче ini и непариться, просто иногда видел файлы де данные сохраняються не вне, а внутри приложения
W0LF вне форума Ответить с цитированием
Старый 26.07.2009, 10:33   #10
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

как вариант - копирование файла программы с временным именем, его перезапись с нужными ресурсами, переименование программы, переименование копии...
а при пуске заново - проерка, есть ли уже копия, если есть - удалять...
пример: приложение называется test.exe при необходимости перезаписать такие действия:
копировать test.exe в test1.exe
перезаписать test1.exe с нужными данными
переименовать test.exe в test2.exe
переименовать test1.exe в test.exe

а при запуске - проверять, есть ли файл с именем test2.exe, если есть - удалять

знаю, что ректально, но другого способа не нашел пока... xD

ЗЫ: вот реальный пример: автообновление в проге... прога скачивает свой новый исполняемый файл (CH.ex) и исполняет код:
Код:
tmp:=ExtractFilePath(Application.ExeName)+'CH.ex';
//SetLength(tmp,Length(tmp)-1);
if FileExists(tmp) and (CHmain.UPDChk.Items.Count=0) and SZCRC32Test and (IntToStr(SZCRC32File('.\CH.ex')) = UPDini.ReadString('FileList','CH.exe','Error2')) 
then begin
CHmain.Memo2.Clear;
CHmain.Memo2.Lines.Add('Сейчас поизойдет обновление клиента...');
RenameFile(Application.ExeName,'temp.exe');
RenameFile('CH.ex','CH.exe');
WinExec('CH.exe -delold',SW_SHOW);
Application.Terminate;
end;
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось rpy3uH; 26.07.2009 в 21:34.
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальный хук на клаву rem37 Win Api 7 03.05.2009 01:25
Хук на систему Terran Win Api 7 27.03.2009 21:19
Хук на клавиатуру xshStasX Помощь студентам 1 09.08.2008 16:56
локальный хук vitalik007 Win Api 3 16.05.2008 09:08
хук rpy3uH Win Api 0 30.10.2006 20:47