Dobrý den,
prosím vás o radu.
Mám kod, který registruje hot key .... vypadá takto :
If not RegisterHotkey
(Handle, 1, 0, 67) Then
ShowMessage('Vnitřní chyba v programu: "Nejde zaregistrovat hot key !!!"');
a normálně ten kod funguje.... ale když jsem ho dal do souboru DLL vytvářeném v Delphi tak to nezná příkaz handle .... co se stím dá dělat ??
Díky za rady.
S pozdravem Paulí.
Fórum › Delphi
Příkaz Handle
Handle není příkaz, ale vrací handle okna. Al evzhledem k tomu, že to máš v DLL, tak požadované handle není k dispozici. Nevím jestli to bude fungovat, ale můžeš zkusit použít GetModuleHandle(NIL). Takže něco jako :
If not RegisterHotkey
(GetModuleHandle(NIL), 1, 0, 67) Then
ShowMessage('Vnitřní chyba v programu: "Nejde zaregistrovat hot key !!!"');
mám dll ve kterým je :
library Project2;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, IniFiles, ExtCtrls, CustomHotKey1;
{$R *.res}
//type
//TForm1 = class(TForm)
//Procedure klavesa( Var msg: TWMHotkey );message WM_HOTKEY;
//private
//{ Private declarations }
//public
//{ Public declarations }
//end;
//var
//Form1: TForm1;
function klavesa: TIniFile;
//(var msg: TWMHotkey);
//var
// IniSoub: TIniFile;
begin
// IniSoub := TIniFile.Create(ChangeFileExt(Application.ExeName, '.INI'));
// try
// klavesa := IniSoub.ReadString('Hlavní', 'Klávesa', '');
// dolů Handle !!!
If not RegisterHotkey
(GetModuleHandle(NIL), 1, 0, 67) Then
ShowMessage('Vnitřní chyba v programu: "Nejde zaregistrovat hot key !!!"');
// finally
// IniSoub.Free;
// end;
Result := msg.hotkey;
end;
Exports
klavesa;
begin
end.
jo a těch // si nevšímejte .... to je do budoucna
A co od toho kódu očekáváš? Zakometoval jsi proměnnou msg a divíš se, že ji překladač nezná, dále jsi uvedl návratovou hodnotu funkce jako TIniFile a cpeš do toho něco z TWMHotKey. Raději napiš čeho chceš docílit, protože tohle je katastrofa(nic proti).
Chtěl bych dll soubor ve kterém budem načtení ini souboru ....
v ini souboru je sekce Hlavní ve které je hodnota proměnná Klávesa (která se rovná např.:vk_control).
a chci aby se zaregistrovala hot key aby když zmáčknu klávesu, která je (v tomto případě) CTRL aby to dalo do Exports
klavesa hodnotu třeba 1 aby bylo v souboru exe vidět, že byla zmáčknuta požadovaná klávesa.
Takže jsem se to pokoušel udělat a jak se mi nedařilo, tak jsem to dal všechno do // ..... snad jsem to vysvětlil dobře ... :-)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Co je HANDLE ? — založil Martin
Změny TForm.Handle — založil Sniper
Znovunačtení handle Notepadu — založil Jurda_I
Detekování windows handle leaků — založil yaqwsx
Získání handle souboru + GetFileSize() — založil Miras