Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сообственое PopupMenu вместо Windows'кого 
:(
    Опции темы
FRAGNATIC
Дата 10.12.2004, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



вообще хотел узнать как мне сделать что бы popupmenu моей проги выскакивало вместо попапменю винды (того что на правую кнопку мыши появляется) всегда и визде ))
PM MAIL   Вверх
SPrograMMer
  Дата 11.12.2004, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: нет
Всего: 6



А где хочешь штоб появлялось?
Добавлено @ 12:30
Берешь компонент TPopupMenu с вкладки Standard, создаешь ему пунктики, затем берешь компонент, у которого хочешь, что б твой попап появляся, например, тектовое поле (Edit), и изменяешь его свойство PopupMenu - это ссылка на твой попап, выбирай его в списке.
Теперь в RunTime при щелчке правой кнопки мыши по Edit`у появится твое, а не стандартное: "Копировать, Выделить, вставить, ...."

Это сообщение отредактировал(а) SPrograMMer - 11.12.2004, 12:32


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
dm9
Дата 11.12.2004, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Всегда и везде - надо ставить глобальный хук.

Читать тута:
http://delphimaster.ru/articles/hooks/index.html

и тута:
http://www.rsdn.ru/article/controls/WinHotkeyCtrl.xml
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 12.12.2004, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



SPrograMMer причём тут это читай я же спрашивал как сделать попап не для формы я спросил как для винды его сделать

dm9 ок почитаем)
PM MAIL   Вверх
FRAGNATIC
Дата 12.12.2004, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



а может примерчик есть
или вот мне говорили что в реестре можно просто изменить может кто знает кокой ключ изменить в реестре надо
PM MAIL   Вверх
dm9
Дата 12.12.2004, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Попап меню - оно не одно единственное на всю систему. Если какое-то конкретное заменить - может быть, и можно через реестр.
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 16.12.2004, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



запарился я а оч срочно надо
не знаю нету у меня опыта в написание хуков да и по винапи тож опыта толком нету)
в сети примеров я чё-то не нашёл может ктонить даст пример хука на мыш именно перехвата нажатия класвиши мыши тока если можно с коментами что бы врубится как оно работает)
PM MAIL   Вверх
FRAGNATIC
Дата 16.12.2004, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



всё не надо) сделал) позже исх выложу)
PM MAIL   Вверх
Мебель
Дата 18.12.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2004
Где: Великие Луки

Репутация: нет
Всего: нет



Выложи... А какую винду копаешь? smile
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 31.8.2005, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



ой наткнулся на эту тему) гы) раз обещал выложить) тогда ща выложу
проект уже как пол года закончил)
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, registry, Mask, JvExMask, JvToolEdit, ExtCtrls, ComCtrls,
   XPStyleActnCtrls, ImgList, Menus, ActnPopupCtrl, ShellAPI;
const
  WM_MESSAGE_FROM_MY_HOOK = WM_USER + $AA;

type 
  MyProcType = procedure (Flag: Boolean); stdcall;

type
  TForm1 = class(TForm)
    ScrollBox1: TScrollBox;
    Panel1: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    Edit25: TEdit;
    Edit26: TEdit;
    Edit27: TEdit;
    Edit28: TEdit;
    Edit29: TEdit;
    Edit30: TEdit;
    Edit31: TEdit;
    Edit32: TEdit;
    Edit33: TEdit;
    Edit34: TEdit;
    Edit35: TEdit;
    Edit36: TEdit;
    Edit37: TEdit;
    Edit38: TEdit;
    Edit39: TEdit;
    Edit40: TEdit;
    Edit41: TEdit;
    Edit42: TEdit;
    Edit43: TEdit;
    Edit44: TEdit;
    Edit45: TEdit;
    Edit46: TEdit;
    Edit47: TEdit;
    Edit48: TEdit;
    Edit49: TEdit;
    Edit50: TEdit;
    Edit51: TEdit;
    Edit52: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    JvFilenameEdit1: TJvFilenameEdit;
    JvFilenameEdit2: TJvFilenameEdit;
    JvFilenameEdit3: TJvFilenameEdit;
    JvFilenameEdit4: TJvFilenameEdit;
    JvFilenameEdit5: TJvFilenameEdit;
    JvFilenameEdit6: TJvFilenameEdit;
    JvFilenameEdit7: TJvFilenameEdit;
    JvFilenameEdit8: TJvFilenameEdit;
    JvFilenameEdit9: TJvFilenameEdit;
    JvFilenameEdit10: TJvFilenameEdit;
    JvFilenameEdit11: TJvFilenameEdit;
    JvFilenameEdit12: TJvFilenameEdit;
    JvFilenameEdit13: TJvFilenameEdit;
    JvFilenameEdit14: TJvFilenameEdit;
    JvFilenameEdit15: TJvFilenameEdit;
    JvFilenameEdit16: TJvFilenameEdit;
    JvFilenameEdit17: TJvFilenameEdit;
    JvFilenameEdit18: TJvFilenameEdit;
    JvFilenameEdit19: TJvFilenameEdit;
    JvFilenameEdit20: TJvFilenameEdit;
    JvFilenameEdit21: TJvFilenameEdit;
    JvFilenameEdit22: TJvFilenameEdit;
    JvFilenameEdit23: TJvFilenameEdit;
    JvFilenameEdit24: TJvFilenameEdit;
    JvFilenameEdit25: TJvFilenameEdit;
    JvFilenameEdit26: TJvFilenameEdit;
    JvFilenameEdit27: TJvFilenameEdit;
    JvFilenameEdit28: TJvFilenameEdit;
    JvFilenameEdit29: TJvFilenameEdit;
    JvFilenameEdit30: TJvFilenameEdit;
    JvFilenameEdit31: TJvFilenameEdit;
    JvFilenameEdit32: TJvFilenameEdit;
    JvFilenameEdit33: TJvFilenameEdit;
    JvFilenameEdit34: TJvFilenameEdit;
    JvFilenameEdit35: TJvFilenameEdit;
    JvFilenameEdit36: TJvFilenameEdit;
    JvFilenameEdit37: TJvFilenameEdit;
    JvFilenameEdit38: TJvFilenameEdit;
    JvFilenameEdit39: TJvFilenameEdit;
    JvFilenameEdit40: TJvFilenameEdit;
    JvFilenameEdit41: TJvFilenameEdit;
    JvFilenameEdit42: TJvFilenameEdit;
    JvFilenameEdit43: TJvFilenameEdit;
    JvFilenameEdit44: TJvFilenameEdit;
    JvFilenameEdit45: TJvFilenameEdit;
    JvFilenameEdit46: TJvFilenameEdit;
    JvFilenameEdit47: TJvFilenameEdit;
    JvFilenameEdit48: TJvFilenameEdit;
    JvFilenameEdit49: TJvFilenameEdit;
    JvFilenameEdit50: TJvFilenameEdit;
    JvFilenameEdit51: TJvFilenameEdit;
    JvFilenameEdit52: TJvFilenameEdit;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    MainMenu: TPopupActionBarEx;
    PopUpMenu: TPopupActionBarEx;
    ImageList1: TImageList;
    AutoStart: TMenuItem;
    Sets: TMenuItem;
    Exit: TMenuItem;
    OnOff: TMenuItem;
    Teory: TMenuItem;
    Usl: TMenuItem;
    Resh: TMenuItem;
    Resh2: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    N21: TMenuItem;
    N22: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    N25: TMenuItem;
    N26: TMenuItem;
    N27: TMenuItem;
    N28: TMenuItem;
    N29: TMenuItem;
    N30: TMenuItem;
    N31: TMenuItem;
    N32: TMenuItem;
    N33: TMenuItem;
    N34: TMenuItem;
    N35: TMenuItem;
    N36: TMenuItem;
    N37: TMenuItem;
    N38: TMenuItem;
    N39: TMenuItem;
    N40: TMenuItem;
    N41: TMenuItem;
    N42: TMenuItem;
    N43: TMenuItem;
    N44: TMenuItem;
    N45: TMenuItem;
    N46: TMenuItem;
    N47: TMenuItem;
    N48: TMenuItem;
    N49: TMenuItem;
    N50: TMenuItem;
    N51: TMenuItem;
    N52: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure SaveSets;
    procedure LoadSets;
    procedure Ic(n:Integer;Icon:TIcon);
    procedure SetsClick(Sender: TObject);
    procedure ExitClick(Sender: TObject);
    procedure AutoStartClick(Sender: TObject);
    procedure AutoRun;
    procedure OnOffClick(Sender: TObject);
    procedure HookInRun;
    procedure CheckBox2Click(Sender: TObject);
    procedure SetCaptions;
    procedure N1Click(Sender: TObject);
  private
    procedure WM_MSG_FROM_HOOK(var msg: TMessage); message WM_MESSAGE_FROM_MY_HOOK;
  public
    { Public declarations }
  protected
    procedure IconMouse(var Msg: TMessage); message WM_USER + 1;
    procedure ControlWindow(var Msg: TMessage); message WM_SYSCOMMAND;
  end;

var
  Form1: TForm1;
  AutoStartUp: Boolean;
  HDLL:HWND;

implementation

{$R *.dfm}

procedure TForm1.WM_MSG_FROM_HOOK(var msg: TMessage);
begin
  //SetForegroundWindow(application.Handle);
  MainMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
  //PostMessage(Handle,WM_NULL,0,0);
end;

procedure TForm1.AutoRun;
var RegIni:TRegIniFile;
begin
  if AutoStartUp then
  begin
    RegIni:=TRegIniFile.Create('Software');
    RegIni.RootKey:=HKEY_CURRENT_USER;
    RegIni.OpenKey('\Software\Microsoft\Windows\CurrentVersion', true);
    RegIni.WriteString('run','TesT', Application.ExeName);
    RegIni.Free;

    AutoStart.Checked:=true;
    CheckBox1.Checked:=true;
  end
  else begin
    RegIni:=TRegIniFile.Create('Software');
    RegIni.RootKey:=HKEY_CURRENT_USER;
    RegIni.OpenKey('\Software\Microsoft\Windows\CurrentVersion', true);
    RegIni.DeleteKey('run','TesT');
    RegIni.Free;

    AutoStart.Checked:=false;
    CHeckBox1.Checked:=false;
  end;

end;
procedure TForm1.SaveSets;
var
  settings: TMemoryStream;
  R: TRegistry;
  i,b :integer;
  S: PChar;
  l: word;
  bb: boolean;
begin
  PageControl1.ActivePageIndex:=0;
  PageControl1.ActivePageIndex:=1;
  PageControl1.ActivePageIndex:=2;
  PageControl1.ActivePageIndex:=3;

  settings := TMemoryStream.Create;

  for i:=0 to PageControl1.ControlCount-1 do
  if PageControl1.Controls[i] is TTabSheet then
  begin
    for b:=0 to TTabSheet(PageControl1.Controls[i]).ControlCount-1 do
    if TTabSheet(PageControl1.Controls[i]).Controls[b] is TEdit then
    begin
      S := PChar(TEdit(TTabSheet(PageControl1.Controls[i]).Controls[b]).Text);
      l := length(S);
      settings.WriteBuffer(l, 1);
      if l > 0 then settings.WriteBuffer(S^, l);
    end
    else begin
    if TTabSheet(PageControl1.Controls[i]).Controls[b] is TJvFileNameEdit then
    begin
      S := PChar(TJvFileNameEdit(TTabSheet(PageControl1.Controls[i]).Controls[b]).Text);
      l := length(S);
      settings.WriteBuffer(l, 2);
      if l > 0 then settings.WriteBuffer(S^, l);
    end;
    end;
  end;

  for i:=0 to ControlCount-1 do
  begin
    if controls[i] is TPanel then
    begin
      for b:=0 to TPanel(controls[i]).ControlCount-1 do
      begin
        if TPanel(controls[i]).Controls[b] is TCheckBox then
        begin
          bb := TCheckBox(TPanel(controls[i]).Controls[b]).Checked;
          settings.WriteBuffer(bb, 3);
        end;
      end;
    end;
  end;


  R := TRegistry.Create;
  R.RootKey := HKEY_CURRENT_USER;
  R.OpenKey('Software\FragSoft\Test\', true);
  settings.Seek(0, soFromBeginning);
  R.WriteBinaryData('settings', settings.Memory^, settings.Size);
  R.Free;

  settings.free;
end;

procedure TForm1.LoadSets;
var
  settings: TMemoryStream;
  R: TRegistry;
  buf: PChar;
  size: integer;
  i,b :integer;
  l: word;
  bb: boolean;
begin
  PageControl1.ActivePageIndex:=0;

  R := TRegistry.Create;
  R.RootKey := HKEY_CURRENT_USER;
  R.OpenKey('Software\FragSoft\Test\', true);

  if R.ValueExists('settings') then
  begin
    size := R.GetDataSize('settings');
    buf := GetMemory(size);
    R.ReadBinaryData('settings', buf^, size);

    settings := TMemoryStream.Create;
    settings.Write(buf^, size);
    FreeMemory(buf);
    settings.Seek(0, soFromBeginning);
    for i:=0 to PageControl1.ControlCount-1 do
    if PageControl1.Controls[i] is TTabSheet then
    begin
      for b:=0 to TTabSheet(PageControl1.Controls[i]).ControlCount-1 do
      if TTabSheet(PageControl1.Controls[i]).Controls[b] is TEdit then
      begin
        settings.ReadBuffer(l, 1);
        if l > 0 then
        begin
          buf := GetMemory(l);
          settings.ReadBuffer(buf^, l);
          TEdit(TTabSheet(PageControl1.Controls[i]).Controls[b]).Text := copy(buf, 1, l);
          FreeMemory(buf);
        end;
      end else
      begin
        if TTabSheet(PageControl1.Controls[i]).Controls[b] is TJvFileNameEdit then
        begin
          settings.ReadBuffer(l, 2);
          if l > 0 then
          begin
            buf := GetMemory(l);
            settings.ReadBuffer(buf^, l);
            TJvFileNameEdit(TTabSheet(PageControl1.Controls[i]).Controls[b]).Text := copy(buf, 1, l);
            FreeMemory(buf)
          end;
        end;
      end;
    end;

    for i:=0 to ControlCount-1 do
    begin
      if controls[i] is TPanel then
      begin
        for b:=0 to TPanel(controls[i]).ControlCount-1 do
        begin
          if TPanel(controls[i]).Controls[b] is TCheckBox then
          begin
            settings.ReadBuffer(bb, 3);
            TCheckBox(TPanel(controls[i]).Controls[b]).Checked := bb
          end;
        end;
      end;
    end;

  settings.Free;
  end;
  R.Free;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caNone;
  ShowWindow(Handle, SW_HIDE);
  ShowWindow(Application.Handle, SW_HIDE);
  //Ic(1, Application.Icon);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  loadSets;
  HookInRun;
  SetCaptions;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    AutoStartUp:=true
  else
    AutoStartUp:=false;

  AutoRun;
end;

procedure TForm1.Ic(n:Integer;Icon:TIcon);
Var
  Nim:TNotifyIconData;
begin
  With Nim do
  Begin
    cbSize:=SizeOf(Nim);
    Wnd:=Form1.Handle;
    uID:=1;
    uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
    hicon:=Icon.Handle;
    uCallbackMessage:=wm_user+1;
    szTip:='Программа х.з. как называется) Автор FRAGNATIC';
  End;

  Case n OF
    1: Shell_NotifyIcon(Nim_Add,@Nim);
    2: Shell_NotifyIcon(Nim_Delete,@Nim);
    3: Shell_NotifyIcon(Nim_Modify,@Nim);
  End;
end;

procedure TForm1.ControlWindow(var Msg: TMessage);
begin
  if Msg.WParam = SC_MINIMIZE then
  begin
    //Ic(1, Application.Icon);
    ShowWindow(Handle, SW_HIDE);
    ShowWindow(Application.Handle, SW_HIDE);
  end
  else
    inherited;
end;

procedure TForm1.IconMouse(var Msg: TMessage);
var
  p: tpoint;
begin
  GetCursorPos(p);
  case Msg.LParam of
  WM_LBUTTONUP, WM_LBUTTONDBLCLK:
  begin
    //Ic(2, Application.Icon);
    SetForegroundWindow(Handle);
    PopupMenu.Popup(p.X, p.Y);
    PostMessage(Handle, WM_NULL, 0, 0)
  end;
  WM_RBUTTONUP:
  begin
    //SetForegroundWindow(Handle);
    //PopupMenu.Popup(p.X, p.Y);
    //PostMessage(Handle, WM_NULL, 0, 0)
  end;
  end;
end;

procedure TForm1.SetsClick(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_SHOW);
  ShowWindow(Handle, SW_SHOW);
end;

procedure TForm1.ExitClick(Sender: TObject);
begin
  SaveSets;
  Ic(2, Application.Icon);
  Application.Terminate;
end;

procedure TForm1.AutoStartClick(Sender: TObject);
begin
  AutoStart.Checked:=not AutoStart.Checked;
  if AutoStart.Checked then
    AutoStartUp:=true
  else
    AutoStartUp:=false;

  AutoRun;
end;

procedure TForm1.OnOffClick(Sender: TObject);
Var Hook: MyProcType;
begin
 if OnOff.Caption='Отключить' then
 begin
   @Hook:=nil;
   IF HDLL>HINSTANCE_ERROR then
   Begin
     @Hook:=GetProcAddress(HDLL,'Hook');
     Hook(False);
   End;
   OnOff.Caption:='Включить';
   OnOff.ImageIndex:=23;
 end
 else begin
   @Hook:=nil;
   HDLL:=LoadLibrary(PChar('Mouse2Hook.dll'));
   IF HDLL>HINSTANCE_ERROR then
   Begin
     @Hook:=GetProcAddress(HDLL,'Hook');
     Hook(True);
   End else MessageDlg('Ошибка загрузки DLL.',mtError,[mbIgnore],0);
   OnOff.Caption:='Отключить';
   OnOff.ImageIndex:=22;
 end
end;

procedure TForm1.HookInRun;
Var Hook: MyProcType;
begin
  if CheckBox2.Checked then
  begin
    @Hook:=nil;
    HDLL:=LoadLibrary(PChar('Mouse2Hook.dll'));
    IF HDLL>HINSTANCE_ERROR then
    Begin
      @Hook:=GetProcAddress(HDLL,'Hook');
      Hook(True);
    End else MessageDlg('Ошибка загрузки DLL.',mtError,[mbIgnore],0);
    OnOff.Caption:='Отключить';
    OnOff.ImageIndex:=22;
  end
  else begin
    @Hook:=nil;
    IF HDLL>HINSTANCE_ERROR then
    Begin
      @Hook:=GetProcAddress(HDLL,'Hook');
      Hook(False);
    End;
    OnOff.Caption:='Включить';
    onOff.ImageIndex:=23;
 end;

end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
  HookInRun;
end;

procedure TForm1.SetCaptions;
var
  i: integer;
  m:TMenuItem;
  e:TEdit;
begin
  for i:=1 to 52 do
  begin
    m:=FindComponent('N'+inttostr(i)) as TMenuitem;
    if m=nil then continue;
    e:=FindComponent('Edit'+inttostr(i)) as TEdit;
    if e=nil then continue;
    m.caption:=e.text;
  end;
end;

procedure TForm1.N1Click(Sender: TObject);
var
  Jv: TJvFilenameEdit;
  s: string;
begin
   if Length(TMenuItem(sender).Name)=2 then
     s:=copy(TMenuItem(sender).Name,length(TMenuItem(sender).Name),1)
   else
     if Length(TMenuItem(sender).Name)=3 then
     s:=copy(TMenuItem(sender).Name,length(TMenuItem(sender).Name)-1,2);


   Jv:=FindComponent('JvFilenameEdit'+s) as TJvFilenameEdit;
   if jv.Text<>'' then
     ShellExecute(handle, 'open', PChar(Jv.Text), '', '', sw_show)
   else ShowMessage('Файл не указан');
end;

end.

Код

library Mouse2Hook;
Uses Windows,Messages, Controls;
const
  WM_MESSAGE_FROM_MY_HOOK = WM_USER + $AA;

Var SysHook:HHook=0; 

Function SysMsgProc(Code:Integer; WParam:LongInt; LParam:LongInt):LongInt; stdcall; 
Var Msg:TMessage;
Begin 
 IF Code=HC_ACTION then 
  Case TMsg(Pointer(LParam)^).Message OF
   WM_RBUTTONDOWN,WM_RBUTTONUP,WM_RBUTTONDBLCLK:
   begin
     TMsg(Pointer(LParam)^).Message:=WM_NULL;
     PostMessage(FindWindow('TForm1',nil), WM_MESSAGE_FROM_MY_HOOK, Mouse.CursorPos.X, Mouse.CursorPos.Y);
   end;
   else Result:=CallNextHookEx(SysHook,Code,WParam,LParam);
  End;
end;

procedure Hook(Flag:Boolean); export; stdcall; 
Begin 
 IF Flag then SysHook:=SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc,HInstance,0) Else 
  Begin
   UnhookWindowsHookEx(SysHook);
   //SysHook:=0;
  End; 
End; 

exports Hook; 

{$R *.res} 

begin 
end.  



PM MAIL   Вверх
FRAGNATIC
Дата 31.8.2005, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



может кому и пригодится имхо много полезного в исх этих
писал училке по информатике хз ей за чем ) грит тип оболочка для файлов .док которы у неё слишком много (все файлы с задачами по паскалю тип)
мне даж бве десятки за неё поставили)

Присоединённый файл ( Кол-во скачиваний: 35 )
Присоединённый файл  1.zip 36,58 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0674 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.