Add(MainForm,2953706,147,77) { Width=229 Height=268 WindowsState=2 Point(Handle) Point(doLeft) link(onCreate,2569453:doData,[]) } Add(InlineCode,4058644,98,105) { WorkPoints=#17:doGetMonInfoByIdx| EventPoints=#6:onLeft| VarPoints=#12:MonitorCount| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|5:const|20: SM_CMONITORS = 80;|2: |6:type |28: HMONITOR = type Integer; |2: |4:type|22: MONITORINFO = record|18: cbSize: DWORD;|21: rcMonitor: TRect;|18: rcWork: TRect;|19: dwFlags: DWORD;|7: end; |31: PMonitorInfo = ^MONITORINFO; |2: |4:type|18: MonIndex = record|17: Idx : Integer;|17: Cnt : Integer;|25: MonInfo : MONITORINFO;|5: end;|25: PMonIndex = ^MonIndex; |0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onLeft: THI_Event;|54: procedure MonitorCount(var dt: TData; idx: word);|59: procedure doGetMonInfoByIdx(var dt: TData; idx: word);|0:|5: end;|1: |74: function EnumDisplayMonitors( dc: HDC; rect: PRect; EnumProc: pointer;|52: lData: LPARAM ): BOOL; stdcall; external user32;|4: |61: procedure GetMonitorInfoA(hm:HMONITOR; pmi:PMonitorInfo); |31: stdcall; external user32; |0:|14:implementation|0:|4:var |18: mi: MONITORINFO;|0:|81:function MonInfoCB(hm: HMONITOR; dc: HDC; r: PRect; l: LPARAM): Boolean; stdcall;|3:var|15:MI : PMonIndex;|5:begin|29: MI := PMonIndex(pointer(l));|13: Inc(MI.Cnt);|24: if MI.Cnt = MI.Idx then|38: GetMonitorInfoA(hm,@(MI.MonInfo));|16: result := true;|5:end; |2: |56:function GetMonInfoByIdx(MonIdx : Integer): MONITORINFO;|3:var|16: MI : MonIndex;|5:begin|42: MI.MonInfo.cbSize := SizeOf(MI.MonInfo);|19: MI.Idx := MonIdx;|14: MI.Cnt := 0;|54: EnumDisplayMonitors(0,nil,@MonInfoCB, Integer(@MI));|23: result := MI.MonInfo;|6:end; |0:|34:function GetMonitorCount: Integer;|5:begin|43: Result := GetSystemMetrics(SM_CMONITORS);|4:end;|0:|40:procedure THiAsmClass.doGetMonInfoByIdx;|20:var idxMon: integer;|5:begin|29: if GetMonitorCount > 1 then|7: begin|28: idxMon := ToInteger(dt);|34: mi := GetMonInfoByIdx(idxMon);|40: _hi_onEvent(onLeft, mi.rcWork.Left);|9: end; |4:end;|0:|35:procedure THiAsmClass.MonitorCount;|5:begin|33: dtInteger(dt, GetMonitorCount);|4:end;|0:|4:end.| link(onLeft,2953706:doLeft,[]) } Add(DoData,2569453,196,91) { @Hint=#23:На какой моник выводить| Data=Integer(2) link(onEventData,4058644:doGetMonInfoByIdx,[(240,97)(240,62)(82,62)(82,111)]) AddHint(50,43,149,13,@Hint) }