type
{$A8} // default quadword-alignment
PSTMenuBarInfo = ^TSTMenuBarInfo;
tagSTMENUBARINFO = record
cbSize: DWORD;
rcBar: TRect;
hMenu: HMENU;
hwndMenu: HWND;
{ fBarFocused:1: BOOL;} { bar, popup has the focus }
{ fFocused:1: BOOL; } { item has the focus }
FocusedBits: BYTE;
end;
TSTMenuBarInfo = tagSTMENUBARINFO;
function STGetMenuBarInfo(hend: HWND; idObject, idItem: Longint; var pmbi: TSTMenuBarInfo): BOOL;
stdcall; external user32 name 'GetMenuBarInfo';
function GetWindowMenuItemRect(const AHandle: THandle; const AIndex: Integer): TRect;
var
LMenuBarInfo: TSTMenuBarInfo;
begin
FillChar(LMenuBarInfo, SizeOf(TSTMenuBarInfo), 0);
LMenuBarInfo.cbSize := SizeOf(TSTMenuBarInfo);
{$RANGECHECKS OFF}
{$OVERFLOWCHECKS OFF}
{$WARN SYMBOL_PLATFORM OFF}
Win32Check(STGetMenuBarInfo(AHandle, Longint($FFFFFFFD), AIndex, LMenuBarInfo));
{$WARN SYMBOL_PLATFORM ON}
{$OVERFLOWCHECKS ON}
{$RANGECHECKS ON}
Result := LMenuBarInfo.rcBar;
end;
Changed types and method name to make sure it uses different types, added some far fetched compiler defines. Same code works using rest of your code. But failed on app that woulöd actually need to use it :). Have an idea tough... Gives me System Error. Code: 1400. Invalid window handle
LEt me see...
btw... Thanks for help!