Příkaz Handle – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Příkaz Handle – Delphi – Fórum – Programujte.comPříkaz Handle – Delphi – Fórum – Programujte.com

 

Paulí
~ Anonymní uživatel
32 příspěvků
1. 8. 2007   #1
-
0
-

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í.

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
1. 8. 2007   #2
-
0
-

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 !!!"');

Nahlásit jako SPAM
IP: ...–
Paulí
~ Anonymní uživatel
32 příspěvků
1. 8. 2007   #3
-
0
-

díky ... a proč nefunguje příkaz Result := msg.hotkey; ???

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
1. 8. 2007   #4
-
0
-

A jak to mám vědět?

Nahlásit jako SPAM
IP: ...–
Paulí
~ Anonymní uživatel
32 příspěvků
1. 8. 2007   #5
-
0
-

no tak z nějakého důvodu to nezná hodnotu msg.hotkey ???? je to divné

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
1. 8. 2007   #6
-
0
-

Si ze mě děláš srandu? Napiš co hlásí kompilátor, uveď zrojový kód(aspoň chybovou část). A teprve pak se uvidí v čem je problém.

Nahlásit jako SPAM
IP: ...–
Paulí
~ Anonymní uživatel
32 příspěvků
1. 8. 2007   #7
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
637 příspěvků
1. 8. 2007   #8
-
0
-

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).

Nahlásit jako SPAM
IP: ...–
Paulí
~ Anonymní uživatel
32 příspěvků
1. 8. 2007   #9
-
0
-

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 ... :-)

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Podobná vlákna

Co je HANDLE ? — založil Martin

Změny TForm.Handle — založil Sniper

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý