Тема: Sysmenu
Показать сообщение отдельно
  #2  
Старый 13.04.2010, 21:53
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Из DRKB Explorer (похожая тема) :
Код:
DRKB Explorer
Как заставить системное меню выпасть в указанном месте?
01.01.2007
{  
  How to popup the windows system menu?  
  Maybe you can use Keybd_event to eumlate ALT+SPACE  
  Maybe you can use a TPopupmenu.  
  But they always have some problem.  
  The method below is a perfect solution!  
  BTW: if your form has borderstyle = bsNone, Please do it like this:  
  Set forms style = bsSingle; and use the code below to set form boder:  
  SetWindowLong(Handle, GWL_STYLE,GetWindowLong(Handle, GWL_STYLE)  
  and (not WS_CAPTION) or WS_DLGFRAME or WS_OVERLAPPED);  
}  
    
 procedure TForm1.Button1Click(Sender: TObject);   
 const  
   { Undocument message ID }  
   WM_POPUPSYSTEMMENU = $313;   
 begin  
   SendMessage(Handle, WM_POPUPSYSTEMMENU, 0,   
   MakeLong(Mouse.CursorPos.X, Mouse.CursorPos.Y));   
 end;

Проверил - работает.
Ответить с цитированием