756 lines
64 KiB
Plaintext
756 lines
64 KiB
Plaintext
unit uwindowsinterface;
|
||
interface
|
||
{**
|
||
@explan(说明) windows平台相关接口 %%
|
||
@date(20220509) %%
|
||
**}
|
||
uses cstructurelib,utslvclauxiliary,utslvclmemstruct;
|
||
type twindowsapi = class()
|
||
private
|
||
static fdefaultwinprochandle;
|
||
public
|
||
function openresourcemanager(p); //打开资源管理器
|
||
begin
|
||
if ifstring(p) then
|
||
return WinExec('cmd.exe /C start "" "'+p,1);
|
||
end
|
||
function getclipboardtext(clpd);
|
||
begin
|
||
sid := GetClipboardData(0x7);
|
||
r := ReadStringFromPtr(sid);
|
||
return r;
|
||
end
|
||
function setclipboardtext(clbd,s);
|
||
begin
|
||
len := length(s);
|
||
hm := GlobalAlloc(2,len+1); //分配内容
|
||
if hm <> 0 then
|
||
begin
|
||
lm := GlobalLock(hm); //枷锁
|
||
if lm <> 0 then
|
||
begin
|
||
memcpy(lm,s,len); //内存拷贝
|
||
GlobalUnlock(hm); //解锁
|
||
r := SetClipboardData(1,hm);
|
||
if r <> 0 then
|
||
begin
|
||
ret := 1;
|
||
end
|
||
end
|
||
end
|
||
return ret;
|
||
end
|
||
function getclipboardbmp();
|
||
begin
|
||
return GetClipboardData(0x2);
|
||
|
||
end
|
||
function setclipboardbmp(bmp);
|
||
begin
|
||
r := SetClipboardData(0x2,bmp);
|
||
if r<>0 then
|
||
begin
|
||
ret := 1;
|
||
end
|
||
return ret;
|
||
end
|
||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
function AnsiToWidChar(c);
|
||
begin
|
||
if not ifstring(c) then return "";
|
||
iSize := MultiByteToWideChar_a(0, 0, C , -1, "", 0);
|
||
if not(iSize>0) then return "";
|
||
pwszUnicode := "";
|
||
setlength(pwszUnicode,isize*2); //少减去2
|
||
MultiByteToWideChar_a(0, 0, c , -1, pwszUnicode , iSize-1);
|
||
return pwszUnicode;
|
||
end
|
||
function GetSystemDirectory(); //获得windowssystem目录
|
||
begin
|
||
s := "";
|
||
n := 1024;
|
||
setlength(s,n);
|
||
c := GetSystemDirectoryA(s,n);
|
||
if c>0 then
|
||
return s[1:c];
|
||
return "";
|
||
end
|
||
function GetSystemDirectoryA(var bf:string;sz:integer):integer;stdcall;external "Kernel32.dll" name "GetSystemDirectoryA";
|
||
function drawbitmaptodc(bm,hdc,x,y,rc,flag,thdc);
|
||
begin
|
||
oldmp := SelectObject(thdc,bm);
|
||
if not flag then flag := 0xcc0020;
|
||
r := BitBlt(hdc,x,y,rc[2]-rc[0],rc[3]-rc[1],thdc,rc[0],rc[1],flag);
|
||
if oldmp then SelectObject(thdc,oldmp);
|
||
return r;
|
||
end
|
||
function drawbitmapstretchtodc(bm,hdc,drect,rc,flag,thdc);
|
||
begin
|
||
oldmp := SelectObject(thdc,bm);
|
||
if not flag then flag := 0xcc0020;
|
||
r := StretchBlt(hdc,drect[0],drect[1],drect[2]-drect[0],drect[3]-drect[1],thdc,rc[0],rc[1],rc[2]-rc[0],rc[3]-rc[1],flag);
|
||
if oldmp then SelectObject(thdc,oldmp);
|
||
return r;
|
||
end
|
||
function get_drage_file_names(w);
|
||
begin
|
||
dn := "";
|
||
opends := array();
|
||
for i := 1 to DragQueryFileA(w,0xFFFFFFFF,"",0) do
|
||
begin
|
||
len := DragQueryFileA(w,i-1,nil,0);
|
||
if len>0 then
|
||
begin
|
||
setlength(dn,len+10);
|
||
if DragQueryFileA(w,i-1,dn,len+1)>0 then
|
||
begin
|
||
opends[length(opends)]:= dn[1:len];
|
||
end
|
||
end
|
||
end
|
||
return opends;
|
||
end
|
||
/////////////////////////////////////////
|
||
function DragQueryFileA(hDrop:pointer;iFile:integer;lpszFile:string;cch:integer):integer;stdcall;external "Shell32.dll" name "DragQueryFileA";
|
||
////////////////////////clipboar//////////////////////
|
||
function OpenClipboard(hwd :pointer):integer;stdcall;external "User32.dll" name "OpenClipboard";
|
||
function EmptyClipboard():integer;stdcall;external "User32.dll" name "EmptyClipboard";
|
||
function CloseClipboard():integer;stdcall;external "User32.dll" name "CloseClipboard";
|
||
function SetClipboardData(uflags:integer;mem:pointer):pointer;stdcall;external "User32.dll" name "SetClipboardData";
|
||
function GetClipboardData(uflags:integer):pointer;stdcall;external "User32.dll" name "GetClipboardData";
|
||
function IsClipboardFormatAvailable(format:integer):integer;stdcall;external "User32.dll" name "IsClipboardFormatAvailable";
|
||
//***********
|
||
function GetDpiForMonitor(hmonitor:pointer; dpiType:integer;var dpiX:integer;var dpiY:integer):pointer;stdcall;external "Shcore.dll" name "GetDpiForMonitor";
|
||
//Kernel32.dll
|
||
//进程和内存相关
|
||
function LoadLibraryA(txt:string):POINTER;stdcall;external "Kernel32.dll" name "LoadLibraryA";
|
||
function FreeLibrary(hd:pointer):integer;stdcall;external "Kernel32.dll" name "FreeLibrary";
|
||
function GetProcAddress(h:pointer;n:string):pointer;stdcall;external "Kernel32.dll" name "GetProcAddress";
|
||
function getDefWindowProcA();
|
||
begin
|
||
if not fdefaultwinprochandle then
|
||
begin
|
||
h := LoadLibraryA("User32.dll");
|
||
if h then
|
||
begin
|
||
fdefaultwinprochandle := GetProcAddress(h,"DefWindowProcA");
|
||
end
|
||
end
|
||
return fdefaultwinprochandle;
|
||
end
|
||
function getvclwindowprocA();
|
||
begin
|
||
global g_windows_proc_handle;
|
||
return g_windows_proc_handle;
|
||
end
|
||
function SetTimer(hWnd:pointer; nIDEvent:pointer; uElapse:integer;lpTimerFunc:pointer):integer;stdcall;external "User32.dll" name "SetTimer";
|
||
function KillTimer(hWnd:pointer; nIDEvent:pointer):integer;stdcall;external "User32.dll" name "KillTimer";
|
||
|
||
function MultiByteToWideChar_a(CodePage:integer;dwFlags:integer;lpMultiByteStr:string;cbMultiByte:integer;var lpWideCharStr:string;cchWideChar:integer):integer;stdcall;external "Kernel32.dll" name "MultiByteToWideChar";
|
||
function GetModuleHandleA(name:pointer):pointer;stdcall;external "Kernel32.dll" name "GetModuleHandleA";
|
||
function GetComputerNameA(var lpBuffer:string;var nSize:integer):integer;stdcall;external "Kernel32.dll" name "GetComputerNameA";
|
||
function GetLastError():integer;stdcall;external "Kernel32.dll" name "GetLastError";
|
||
function GetEnvironmentVariableA(lpName:string;lpBuffer:string;nSize:integer):integer;stdcall;external "Kernel32.dll" name "GetEnvironmentVariableA";
|
||
function SetEnvironmentVariableA(lpName:string; lpValue:string):integer;stdcall;external "Kernel32.dll" name "SetEnvironmentVariableA";
|
||
function GetLogicalDriveStringsA(BUFSIZE:integer; szLogicDriveStrings:string):integer;stdcall;external "Kernel32.dll" name "GetLogicalDriveStringsA";
|
||
function GetDiskFreeSpaceExA(lpDirectoryName:string;var lpFreeBytesAvailableToCaller:int64;var lpTotalNumberOfBytes:int64;var lpTotalNumberOfFreeBytes:int64):integer;stdcall ;external "Kernel32.dll" name "GetDiskFreeSpaceExA";
|
||
function GlobalAlloc(uFlags :integer;dwBytes:integer):pointer;stdcall;external "Kernel32.dll" name "GlobalAlloc";
|
||
function CreateStreamOnHGlobal(hGlobal:pointer;fDeleteOnRelease:integer; var ppstm:pointer):pointer;stdcall;external "Ole32.dll" name "CreateStreamOnHGlobal";
|
||
function GetHGlobalFromStream(pstm:pointer; var phglobal:pointer):pointer;stdcall;external "Ole32.dll" name "GetHGlobalFromStream";
|
||
function GlobalLock(mem :pointer):pointer;stdcall;external "Kernel32.dll" name "GlobalLock";
|
||
function GlobalUnlock(mem :pointer):integer;stdcall;external "Kernel32.dll" name "GlobalUnlock";
|
||
function GlobalSize(menm:pointer):integer;stdcall;external "Kernel32.dll" name "GlobalSize";
|
||
function GetStartupInfoA(lpStartupInfo:pointer):integer;stdcall ;external "Kernel32.dll" name "GetStartupInfoA" ;
|
||
function GetExitCodeProcess(hProcess:pointer;var lpExitCode:integer):integer;stdcall ;external "Kernel32.dll" name "GetExitCodeProcess" ;
|
||
function CreateProcessA(lpApplicationName:string;lpCommandLine:string;lpProcessAttributes:pointer;
|
||
lpThreadAttributes:pointer;bInheritHandles:integer;dwCreationFlags:integer;lpEnvironment:pointer;
|
||
lpCurrentDirectory:string;lpStartupInfo:pointer;
|
||
lpProcessInformation:pointer):integer;stdcall ;external "Kernel32.dll" name "CreateProcessA" ;
|
||
function CreatePipe(var hReadPipe:pointer;var hWritePipe : pointer;
|
||
lpPipeAttributes:pointer;nSize:integer):integer;stdcall;external "Kernel32.dll" name "CreatePipe";
|
||
function PeekNamedPipe(hNamedPipe:pointer;var lpBuffer:string; nBufferSize:integer; var lpBytesRead:integer;
|
||
varlpTotalBytesAvail:integer;var lpBytesLeftThisMessage:integer):integer;stdcall;external "Kernel32.dll" name "PeekNamedPipe";
|
||
function GetStdHandle(nStdHandle:integer):pointer;stdcall;external "Kernel32.dll" name "GetStdHandle";
|
||
function SetStdHandle(nStdHandle:integer;hHandle:pointer):integer;stdcall;external "Kernel32.dll" name "SetStdHandle";
|
||
function CreateFileA(var lpFileName:string;dwDesiredAccess:integer;
|
||
dwShareMode:integer;lpSecurityAttributes:pointer;dwCreationDisposition:integer;
|
||
dwFlagsAndAttributes:integer;hTemplateFile:pointer):pointer;stdcall;external "Kernel32.dll" name "CreateFileA";
|
||
function WriteFile(hFile:pointer; lpBuffer:pointer;nNumberOfBytesToWrite:integer;var lpNumberOfBytesWritten:integer; lpOverlapped:pointer):integer;stdcall;external "Kernel32.dll" name "WriteFile";
|
||
function WriteFile2(hFile:pointer; var lpBuffer:string;nNumberOfBytesToWrite:integer;var lpNumberOfBytesWritten:integer; lpOverlapped:pointer):integer;stdcall;external "Kernel32.dll" name "WriteFile";
|
||
function ReadFile__(hFile:pointer;var lpBuffer:string;nNumberOfBytesToRead:integer;var lpNumberOfBytesRead:integer;pOverlapped:pointer):integer;stdcall;external "Kernel32.dll" name "ReadFile";
|
||
function OpenProcess(dwDesiredAccess:integer;bInheritHandle:integer;dwProcessId:integer):pointer;stdcall;external "Kernel32.dll" name "OpenProcess";
|
||
function GetHandleInformation(hObject:pointer;var lpdwFlags:integer):integer;stdcall;external "Kernel32.dll" name "GetHandleInformation";
|
||
function CloseHandle(hObject:pointer):integer;stdcall ;external "Kernel32.dll" name "CloseHandle" ;
|
||
function _lclose(hObject:pointer):pointer;stdcall ;external "Kernel32.dll" name "_lclose" ;
|
||
function CreateToolhelp32Snapshot(dwFlags:integer;th32ProcessID:integer):pointer;stdcall;external "Kernel32.dll" name "CreateToolhelp32Snapshot";
|
||
function Process32First(hSnapshot:pointer;lppe:pointer):integer;stdcall;external "Kernel32.dll" name "Process32First";
|
||
function Process32Next(hSnapshot:pointer; lppe:pointer):integer;stdcall;external "Kernel32.dll" name "Process32Next";
|
||
function Module32First(hSnapshot:pointer;lpme:pointer):integer;stdcall;external "Kernel32.dll" name "Module32First";
|
||
function Module32Next(hSnapshot:pointer; lppe:pointer):integer;stdcall;external "Kernel32.dll" name "Module32Next";
|
||
function GetCurrentDirectoryA(nBufferLength:integer; var lpBuffer:string):integer;stdcall;external "Kernel32.dll" name "GetCurrentDirectoryA";
|
||
function SetCurrentDirectoryA(lpPathName:string):integer;stdcall;external "Kernel32.dll" name "SetCurrentDirectoryA";
|
||
Function WinExec(lpCmdLine:string;nCmdShow:integer):integer;stdcall; external "kernel32.dll" name "WinExec" ;
|
||
function GetDriveTypeA(lpRootPathName:string):integer;stdcall; external "kernel32.dll" name "GetDriveTypeA" ;
|
||
(*
|
||
DRIVE_UNKNOWN = 0; {未知}
|
||
DRIVE_NO_ROOT_DIR = 1; {可移动磁盘}
|
||
DRIVE_REMOVABLE = 2; {软盘}
|
||
DRIVE_FIXED = 3; {本地硬盘}
|
||
DRIVE_REMOTE = 4; {网络磁盘}
|
||
DRIVE_CDROM = 5; {CD-ROM}
|
||
DRIVE_RAMDISK = 6; {RAM 磁盘}
|
||
*)
|
||
function EnumProcesses_(var lpidProcess:array of integer;cb:integer; var lpcbNeeded:integer):integer;stdcall;external "Kernel32.dll" name "K32EnumProcesses";
|
||
function GetModuleFileNameExA(hProcess:pointer; hModule:pointer;var lpFilename:string;nSize:integer):integer;stdcall;external "Kernel32.dll" name "K32GetModuleFileNameExA";
|
||
function QueryFullProcessImageNameA(hProcess:pointer; dwFlags:integer;var lpFilename:string;var nSize:integer):integer;stdcall;external "Kernel32.dll" name "QueryFullProcessImageNameA";
|
||
function GetCurrentProcess():pointer;stdcall;external "Kernel32.dll" name "GetCurrentProcess";
|
||
function OpenProcessToken(ProcessHandle:pointer;DesiredAccess:integer; var TokenHandle:pointer):integer;stdcall;external "Advapi32.dll" name "OpenProcessToken";
|
||
//SeDebugPrivilege
|
||
function LookupPrivilegeValueA(var PolicyHandle:string;var Name:string; lpLuid:pointer):integer;stdcall;external "Advapi32.dll" name "LookupPrivilegeValueA";
|
||
function AdjustTokenPrivileges(TokenHandle:pointer; DisableAllPrivileges:integer; NewState:pointer ; BufferLength:integer;
|
||
PreviousState:pointer; ReturnLength:pointer):integer;stdcall;external "Advapi32.dll" name "AdjustTokenPrivileges";
|
||
//Snapshot from Psapi.lib – WinSDK V7.0*
|
||
(* #if (PSAPI_VERSION > 1)
|
||
#define EnumProcesses K32EnumProcesses
|
||
#define EnumProcessModules K32EnumProcessModules
|
||
#define EnumProcessModulesEx K32EnumProcessModulesEx
|
||
#define GetModuleBaseNameA K32GetModuleBaseNameA
|
||
#define GetModuleBaseNameW K32GetModuleBaseNameW
|
||
#define GetModuleFileNameExA K32GetModuleFileNameExA
|
||
#define GetModuleFileNameExW K32GetModuleFileNameExW
|
||
#define GetModuleInformation K32GetModuleInformation
|
||
#define EmptyWorkingSet K32EmptyWorkingSet
|
||
#define QueryWorkingSet K32QueryWorkingSet
|
||
#define QueryWorkingSetEx K32QueryWorkingSetEx
|
||
#define InitializeProcessForWsWatch K32InitializeProcessForWsWatch
|
||
#define GetWsChanges K32GetWsChanges
|
||
#define GetWsChangesEx K32GetWsChangesEx
|
||
#define GetMappedFileNameW K32GetMappedFileNameW
|
||
#define GetMappedFileNameA K32GetMappedFileNameA
|
||
#define EnumDeviceDrivers K32EnumDeviceDrivers
|
||
#define GetDeviceDriverBaseNameA K32GetDeviceDriverBaseNameA
|
||
#define GetDeviceDriverBaseNameW K32GetDeviceDriverBaseNameW
|
||
#define GetDeviceDriverFileNameA K32GetDeviceDriverFileNameA
|
||
#define GetDeviceDriverFileNameW K32GetDeviceDriverFileNameW
|
||
#define GetProcessMemoryInfo K32GetProcessMemoryInfo
|
||
#define GetPerformanceInfo K32GetPerformanceInfo
|
||
#define EnumPageFilesW K32EnumPageFilesW
|
||
#define EnumPageFilesA K32EnumPageFilesA
|
||
#define GetProcessImageFileNameA K32GetProcessImageFileNameA
|
||
#define GetProcessImageFileNameW K32GetProcessImageFileNameW
|
||
#endif *)
|
||
|
||
|
||
//定时器
|
||
//function SetClassLongA(hWnd:pointer; nIDEvent:pointer):integer;stdcall;external "User32.dll" name " SetClassLongA";
|
||
function MonitorFromRect(rec :array of integer;dwFlags:integer):pointer;stdcall;external "User32.dll" name "MonitorFromRect";
|
||
function MonitorFromPoint(rec:pointer;dwFlags:integer):pointer;stdcall;external "User32.dll" name "MonitorFromPoint";
|
||
function GetDpiFromDpiAwarenessContext(v:pointer):integer;stdcall;external "User32.dll" name "GetDpiFromDpiAwarenessContext";
|
||
function GetDpiForWindow(hwnd:pointer):integer;stdcall;external "User32.dll" name "GetDpiForWindow";
|
||
function GetMonitorInfoA(hMonitor:pointer;lpmi:pointer):integer;stdcall;external "User32.dll" name "GetMonitorInfoA";
|
||
function MonitorFromWindow(hwnd:pointer;dwFlags:integer):pointer;stdcall;external "User32.dll" name "MonitorFromWindow";
|
||
function GetSysColor(idx:integer):integer;;stdcall;external "User32.dll" name "GetSysColor";
|
||
function SystemParametersInfoA(uiAction:integer;uiParam:integer; pvParam:pointer; fWinIni:integer):integer;stdcall;external "User32.dll" name "SystemParametersInfoA";
|
||
|
||
//双击间隔
|
||
function SetDoubleClickTime(it:integer):integer;stdcall;external "User32.dll" name "SetDoubleClickTime";
|
||
function GetDoubleClickTime():integer;stdcall;external "User32.dll" name "GetDoubleClickTime";
|
||
//热键
|
||
function RegisterHotKey(hWnd:pointer;id:integer; fsModifiers:integer; vk:integer):integer;stdcall;external "User32.dll" name "RegisterHotKey";
|
||
function UnregisterHotKey(hWnd:pointer;id:integer):integer;stdcall;external "User32.dll" name "UnregisterHotKey";
|
||
function MapVirtualKeyA(uCode:integer; uMapType:integer):integer;stdcall;external "User32.dll" name "MapVirtualKeyA";
|
||
function GetKeyNameTextA(lParam:integer;var lpString:string;cchSize:integer):integer;stdcall;external "User32.dll" name "GetKeyNameTextA";
|
||
|
||
//窗口相关
|
||
function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA";
|
||
function GetForegroundWindow():pointer;stdcall;external "User32.dll" name "GetForegroundWindow";
|
||
function GetActiveWindow():pointer;stdcall;external "User32.dll" name "GetActiveWindow";
|
||
function SetActiveWindow(h:pointer):pointer;stdcall;external "user32.dll" name "SetActiveWindow";
|
||
function UpdateLayeredWindow(hWnd:pointer;hdcDst:pointer;pptDst:pointer;psize:pointer;hdcSrc:pointer;pptSrc:pointer; crKey:integer;pblend:pointer; dwFlags:pointer):integer;stdcall;external "User32.dll" name "UpdateLayeredWindow";
|
||
function GetFocus():pointer;stdcall;external "User32.dll" name "GetFocus";
|
||
function SetLayeredWindowAttributes(hwnd:pointer;crKey:integer;bAlpha:byte;dwFlags:integer):integer;stdcall;external "User32.dll" name "SetLayeredWindowAttributes";
|
||
function IsWindow(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindow";
|
||
function IsZoomed(hd:pointer):integer;stdcall;external "User32.dll" name "IsZoomed";
|
||
function IsIconic(hd:pointer):integer;stdcall;external "User32.dll" name "IsIconic";
|
||
function IsWindowVisible(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindowVisible";
|
||
function GetWindow(hd:pointer;cd:integer):pointer;stdcall;external "User32.dll" name "GetWindow";
|
||
//function GetNextWindow(hd:pointer;cd:integer):pointer;stdcall;external "User32.dll" name "GetNextWindow";
|
||
function GetNextWindow(h,cd);
|
||
begin
|
||
return GetWindow(h,cd);
|
||
end
|
||
function GetTopWindow(hd:pointer):pointer;stdcall;external "User32.dll" name "GetTopWindow";
|
||
function GetWindowThreadProcessId(hd:pointer;var pid :integer):integer;stdcall;external "User32.dll" name "GetWindowThreadProcessId";
|
||
function IsChild(hd:pointer;cd:pointer):integer;stdcall;external "User32.dll" name "IsChild";
|
||
function RegisterClassExA(wc:pointer):short;stdcall;external "User32.dll" name "RegisterClassExA";
|
||
function EnableWindow(wc:pointer;b:integer):integer;stdcall;external "User32.dll" name "EnableWindow";
|
||
//窗口操作
|
||
|
||
function ForegroundWindow(wnd_);
|
||
begin
|
||
if not (wnd_>0 or wnd_<0) then return 0;
|
||
if GetForegroundWindow()=wnd_ then return 1;
|
||
ShowWindow(wnd_,8);
|
||
SetWindowPos(wnd_, 0xFFFFFFFF, 0, 0, 0, 0, 1 .| 2);
|
||
SetWindowPos(wnd_, 0xFFFFFFFE, 0, 0, 0, 0, 1 .| 2);
|
||
return 1;
|
||
hForeWnd := GetForegroundWindow();
|
||
if wnd_ = hForeWnd then return 0;
|
||
dwForeID := GetWindowThreadProcessId(hForeWnd, 0);
|
||
dwCurID := systhreadid();
|
||
if dwForeID = dwCurID then return 0;
|
||
AttachThreadInput(dwCurID, dwForeID, TRUE);
|
||
ShowWindow(wnd_, 1);
|
||
SetWindowPos(wnd_, 0xFFFFFFFF, 0, 0, 0, 0, 1 .| 2);
|
||
SetWindowPos(wnd_, 0xFFFFFFFE, 0, 0, 0, 0, 1 .| 2);
|
||
//echo "\r\n brt editor:",SetForegroundWindow(wnd_);
|
||
AttachThreadInput(dwCurID, dwForeID, FALSE);
|
||
end
|
||
function AttachThreadInput(idattach:integer;idattachto:integer;fattach:integer):integer;stdcall;external "User32.dll" name "AttachThreadInput";
|
||
function ShowWindow(hwd :pointer;f:integer):integer;stdcall;external "User32.dll" name "ShowWindow";
|
||
function BringWindowToTop(hwd :pointer):integer;stdcall;external "User32.dll" name "BringWindowToTop";
|
||
function SetForegroundWindow(hwd :pointer):integer;stdcall;external "User32.dll" name "SetForegroundWindow";
|
||
function AllowSetForegroundWindow(hwd :integer):integer;stdcall;external "User32.dll" name "AllowSetForegroundWindow";
|
||
function SetWindowPos(wd:pointer;hWndInsertAfter:pointer;
|
||
X:integer; Y:integer; cx:integer;cy:integer; uFlags:integer):integer;stdcall;external "User32.dll" name "SetWindowPos";
|
||
function MoveWindow(wd:pointer; X:integer; Y:integer; cx:integer;cy:integer; bRepaint:integer):pointer;stdcall;external "User32.dll" name "MoveWindow";
|
||
//窗口大小
|
||
function GetClientRect(hwnd :pointer;var rec:array of integer):integer;stdcall;external "User32.dll" name "GetClientRect";
|
||
function GetWindowRect(hwnd :pointer;var rec:array of integer):integer;stdcall;external "User32.dll" name "GetWindowRect";
|
||
function GetWindowInfo(hwnd :pointer;f:pointer):integer;stdcall;external "User32.dll" name "GetWindowInfo";
|
||
|
||
function GetSystemMetrics(ndx :integer):integer;stdcall;external "User32.dll" name "GetSystemMetrics";
|
||
function ClientToScreen(hwnd :pointer;var p:array of integer):integer;stdcall;external "User32.dll" name "ClientToScreen";
|
||
function ScreenToClient(hwnd :pointer;var p:array of integer):integer;stdcall;external "User32.dll" name "ScreenToClient";
|
||
|
||
function GetParent(hwnd :pointer):pointer;stdcall;external "User32.dll" name "GetParent";
|
||
function SetParent(hwnd :pointer;phwnd:pointer):pointer;stdcall;external "User32.dll" name "SetParent";
|
||
function UpdateWindow(hwnd :pointer):integer;stdcall;external "User32.dll" name "UpdateWindow";
|
||
function GetUpdateRect(hWnd:pointer; var lpRect:array of integer;bErase:integer):integer;stdcall;external "User32.dll" name "GetUpdateRect";
|
||
function InvalidateRect(hwnd :pointer;rec:array of integer;f:integer):integer;stdcall;external "User32.dll" name "InvalidateRect";
|
||
function InvalidateRect2(hwnd :pointer;rec:pointer;f:integer):integer;stdcall;external "User32.dll" name "InvalidateRect";
|
||
function ValidateRect(hwnd :pointer;rec:array of integer):integer;stdcall;external "User32.dll" name "ValidateRect";
|
||
function SetFocus(hwnd :pointer):pointer;stdcall;external "User32.dll" name "SetFocus";
|
||
function GetWindowTextLengthA(hwnd :pointer):integer;stdcall;external "User32.dll" name "GetWindowTextLengthA";
|
||
function GetWindowTextA(hwnd :pointer;var s:string;l:integer):integer;stdcall;external "User32.dll" name "GetWindowTextA";
|
||
function SetWindowTextA(hwnd :pointer;s:string):integer;stdcall;external "User32.dll" name "SetWindowTextA";
|
||
function GetClassInfoExA(HH:pointer;lpszClass:string;lpwcx:pointer):integer;stdcall;external "User32.dll" name "GetClassInfoExA";
|
||
function DefWindowProc(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "DefWindowProc";
|
||
{$IFDEF win64}
|
||
function SetWindowLongPtrA(HH:pointer;idx:integer;dwNewLong:pointer):pointer;stdcall;external "User32.dll" name "SetWindowLongPtrA";
|
||
function GetWindowLongPtrA(HH:pointer;idx:integer):pointer;stdcall;external "User32.dll" name "GetWindowLongPtrA";
|
||
function SetClassLongPtrA(HH:pointer;idx:integer;dwNewLong:pointer):pointer;stdcall;external "User32.dll" name "SetClassLongPtrA";
|
||
function GetClassLongPtrA(HH:pointer;idx:integer):pointer;stdcall;external "User32.dll" name "GetClassLongPtrA";
|
||
|
||
{$ELSE}
|
||
function SetWindowLongPtrA(HH:pointer;idx:integer;dwNewLong:pointer):pointer;stdcall;external "User32.dll" name "SetWindowLongA";
|
||
function GetWindowLongPtrA(HH:pointer;idx:integer):pointer;stdcall;external "User32.dll" name "GetWindowLongA";
|
||
function SetClassLongPtrA(HH:pointer;idx:integer;dwNewLong:pointer):pointer;stdcall;external "User32.dll" name "SetClassLongA";
|
||
function GetClassLongPtrA(HH:pointer;idx:integer):pointer;stdcall;external "User32.dll" name "GetClassLongA";
|
||
{$ENDIF}
|
||
//function SetWindowLongA(HH:pointer;idx:integer;dwNewLong:pointer):pointer;stdcall;external "User32.dll" name "SetWindowLongA";
|
||
//function GetWindowLongA(HH:pointer;idx:integer):pointer;stdcall;external "User32.dll" name "GetWindowLongA";
|
||
function GetClassNameA(HH:pointer;var name:string;len:integer):integer;stdcall;external "User32.dll" name "GetClassNameA";
|
||
function CreateWindowExA(dwExStyle:integer; lpClassName:string; lpWindowName:string;
|
||
dwStyle:integer;x:integer;y:integer;nWidth:integer;nHeight:integer;
|
||
hWndParent:pointer;hMenu:pointer; hInstance:pointer;lpParam:pointer):pointer;stdcall;external "User32.dll" name "CreateWindowExA";
|
||
function DestroyWindow(hWnd:pointer):integer;stdcall;external "User32.dll" name "DestroyWindow";
|
||
//消息相关
|
||
function CallWindowProcA(lpPrevWndFunc:pointer;hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):pointer;stdcall;external "User32.dll" name "CallWindowProcA";
|
||
function DefWindowProcA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):pointer;stdcall;external "User32.dll" name "DefWindowProcA";
|
||
function SendMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):pointer;stdcall;external "User32.dll" name "SendMessageA";
|
||
function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA";
|
||
function GetMessageA(lpMsg:pointer;hWnd:pointer;wMsgFilterMin:integer;wMsgFilterMax:integer):integer;stdcall;external "User32.dll" name "GetMessageA";
|
||
function PeekMessageA(lpMsg:pointer; hWnd:pointer; wMsgFilterMin:integer; wMsgFilterMax:integer;wRemoveMsg:integer):integer ;stdcall;external "User32.dll" name "PeekMessageA";
|
||
function WaitMessage():integer ;stdcall;external "User32.dll" name "WaitMessage";
|
||
function PostQuitMessage(code:integer);stdcall;external "User32.dll" name "PostQuitMessage";
|
||
function PostThreadMessageA(idThread:integer ;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostThreadMessageA";
|
||
function TranslateMessage(msg:pointer):integer;stdcall;external "User32.dll" name "TranslateMessage";
|
||
function DispatchMessageA(msg:pointer):integer;stdcall;external "User32.dll" name "DispatchMessageA";
|
||
function TranslateAcceleratorA(hWnd:pointer; hAccTable:pointer;lpMsg:pointer):integer;stdcall;external "User32.dll" name "TranslateAcceleratorA";
|
||
function CreateAcceleratorTableA(paccel:pointer;cAccel:integer):pointer;stdcall;external "User32.dll" name "CreateAcceleratorTableA";
|
||
function DestroyAcceleratorTable(hAccel:pointer):integer;stdcall;external "User32.dll" name "DestroyAcceleratorTable";
|
||
//按键状态
|
||
Function GetKeyState(key:integer):short;stdcall;external "User32.dll" name "GetKeyState";
|
||
Function GetAsyncKeyState(key:integer):short;stdcall;external "User32.dll" name "GetAsyncKeyState";
|
||
|
||
//光标
|
||
function WindowFromPoint(X:integer; Y:integer):pointer;stdcall;external "User32.dll" name "WindowFromPoint";
|
||
function ClipCursor(rec:array of integer):integer;stdcall;external "User32.dll" name "ClipCursor";
|
||
|
||
function GetCursorPos(var point: array of integer):integer;stdcall;external "User32.dll" name "GetCursorPos";
|
||
function GetCursorInfo_( pci:pointer):integer;stdcall;external "User32.dll" name "GetCursorInfo";
|
||
function ShowCursor(bshow:integer):integer;stdcall;external "User32.dll" name "ShowCursor";
|
||
function SetCursorPos(x:integer;y:integer):integer;stdcall;external "User32.dll" name "SetCursorPos" ;
|
||
Function LoadCursorA(hd:pointer;n:string):pointer;stdcall;external "User32.dll" name "LoadCursorA";
|
||
Function LoadCursorA2(hd:pointer;n:pointer):pointer;stdcall;external "User32.dll" name "LoadCursorA";
|
||
Function SetCursor(hd:pointer):pointer;stdcall;external "User32.dll" name "SetCursor";
|
||
function CreateCursor(hInst:pointer; xHotSpot:integer;yHotSpot:integer; nWidth:integer; nHeight:integer; pvANDPlane:pointer; pvXORPlane:pointer):pointer;stdcall;external "User32.dll" name "CreateCursor";
|
||
//caret 插入符号
|
||
function CreateCaret(hWnd :pointer;hBitmap:pointer;nWidth:integer;nHeight:integer):integer;stdcall;external "User32.dll" name "CreateCaret";
|
||
function SetCaretPos(x:integer;y:integer):integer;stdcall;external "User32.dll" name "SetCaretPos";
|
||
function HideCaret(hwnd :pointer):integer;stdcall;external "User32.dll" name "HideCaret";
|
||
function DestroyCaret():integer;stdcall;external "User32.dll" name "DestroyCaret";
|
||
function SetCaretBlinkTime(uMSeconds :integer):integer;stdcall;external "User32.dll" name "SetCaretBlinkTime";
|
||
function ShowCaret(hwnd :pointer):integer;stdcall;external "User32.dll" name "ShowCaret";
|
||
function GetCaretBlinkTime():integer;stdcall;external "User32.dll" name "GetCaretBlinkTime";
|
||
function GetCaretPos(lp:array of integer):integer;stdcall;external "User32.dll" name "GetCaretPos";
|
||
|
||
function memcpy(dst:pointer;src:string;size_t:pointer):pointer;cdecl;external "msvcrt.dll" name "memcpy";
|
||
function memcpy2(var dst:string;src:pointer;size_t:pointer):pointer;cdecl;external "msvcrt.dll" name "memcpy";
|
||
function fopen(filename:string; mode:string):pointer;cdecl;external "msvcrt.dll" name "fopen";
|
||
function exec_command_line(cmd:string); //执行cmd 并获得打印结果
|
||
begin
|
||
if not(cmd and ifstring(cmd)) then return "";
|
||
r := "";
|
||
FBufSize := 1024;
|
||
si := new T_startupinfoa();
|
||
sa := new T_security_attributes();
|
||
pi := new T_process_information();
|
||
sa.bInheritHandle := TRUE; //必须为TRUE,父进程的读写句柄可以被子进程继承
|
||
sa.nLength := sa._size_;
|
||
//创建匿名管道
|
||
bRet := CreatePipe(hRead, hWrite, sa._getptr_, 0);
|
||
if not bRet then return r;
|
||
GetStartupInfoA(si._getptr_);
|
||
si.dwflags := 0x100;
|
||
si.hStdOutput := hWrite;
|
||
si.hStdError := hwrite;
|
||
p := CreateProcessA(nil,cmd, 0,0,true,0,0,nil,si._getptr_,pi._getptr_);
|
||
CloseHandle(hWrite); //关闭写管道
|
||
if p then //读取
|
||
begin
|
||
szReadBuf := "";
|
||
setlength(szReadBuf,FBufSize);
|
||
nReadNum :=0;
|
||
while (ReadFile__(hRead, szReadBuf, FBufSize-1,nReadNum,nil )) do
|
||
begin
|
||
r+= szreadbuf[1:nreadnum];
|
||
nReadNum := 0;
|
||
end
|
||
end
|
||
//GetExitCodeProcess(pi.hProcess,0);
|
||
CloseHandle(hRead); //关闭读管道
|
||
return r;
|
||
end
|
||
function fclose(f:pointer):integer;cdecl;external "msvcrt.dll" name "fclose";
|
||
function GetProcessId(h:pointer):integer;stdcall;external "Kernel32.dll" name "GetProcessId";
|
||
function LockFile(hFile:pointer; dwFileOffsetLow:integer; dwFileOffsetHigh:integer;nNumberOfBytesToLockLow:integer;nNumberOfBytesToLockHigh:integer):integer;stdcall;external "Kernel32.dll" name "LockFile";
|
||
function UnlockFile(hFile:pointer; dwFileOffsetLow:integer; dwFileOffsetHigh:integer;nNumberOfBytesToLockLow:integer;nNumberOfBytesToLockHigh:integer):integer;stdcall;external "Kernel32.dll" name "UnlockFile";
|
||
//icon
|
||
function DrawIcon(hDC:pointer;X:integer;Y:integer;hIcon:pointer):integer;stdcall;external "User32.dll" name "DrawIcon";
|
||
function CreateIcon(hInstance:pointer;nWidth:integer;nHeight:integer;cPlanes:byte;cBitsPixel:byte ;lpbANDbits:pointer;lpbXORbits:pointer):pointer;stdcall;external "User32.dll" name "CreateIcon";
|
||
function CreateIconIndirect(info:pointer):pointer;stdcall;external "User32.dll" name "CreateIconIndirect";
|
||
function CreateIcon2(hInstance:pointer;nWidth:integer;nHeight:integer;cPlanes:byte;cBitsPixel:byte ;var lpbANDbits:string;var lpbXORbits:string):pointer;stdcall;external "User32.dll" name "CreateIcon";
|
||
function DestroyIcon(icon:pointer):integer;stdcall;external "User32.dll" name "DestroyIcon";
|
||
function GetIconInfo(hIcon:pointer; piconinfo:pointer):integer;stdcall;external "User32.dll" name "GetIconInfo";
|
||
function DestroyCursor(cursor:pointer):integer;stdcall;external "User32.dll" name "DestroyCursor";
|
||
//scroll
|
||
function SetScrollRange(hWnd:pointer;nBar:integer;nMinPos:integer; nMaxPos:integer;bRedraw:integer):integer;stdcall;external "User32.dll" name "SetScrollRange";
|
||
function GetScrollRange(hWnd:pointer;nBar:integer;var nMinPos:integer; var nMaxPos:integer):integer;stdcall;external "User32.dll" name "GetScrollRange";
|
||
function SetScrollPos(hWnd:pointer;nBar:integer;Pos:integer;bRedraw:integer):integer;stdcall;external "User32.dll" name "SetScrollPos";
|
||
function GetScrollPos(hWnd:pointer;nBar:integer):integer;stdcall;external "User32.dll" name "GetScrollPos";
|
||
function ScrollWindow(hWnd:pointer;x:integer;y:integer; var lpRect:array of integer;var lpClipRect:array of integer):integer;stdcall;external "User32.dll" name "ScrollWindow";
|
||
function ScrollDC(hDC:pointer;dx:integer;dy:integer;var lprcScroll:array of integer; var lprcClip:array of integer;hrgnUpdate:pointer;lprcUpdate:pointer):integer;stdcall;external "User32.dll" name "ScrollDC";
|
||
function GetScrollInfo(hWnd:pointer;x:integer;info:pointer):integer;stdcall;external "User32.dll" name "GetScrollInfo";
|
||
function SetScrollInfo(hwnd:pointer; nBar:integer; lpsi:pointer;redraw:integer):integer;stdcall;external "User32.dll" name "SetScrollInfo";
|
||
//menu菜单类*****************************************************
|
||
Function CreateMenu():pointer;stdcall;external "User32.dll" name "CreateMenu";
|
||
Function CreatePopupMenu():pointer;stdcall;external "User32.dll" name "CreatePopupMenu";
|
||
Function DestroyMenu(hMenu:pointer):integer;stdcall;external "User32.dll" name "DestroyMenu";
|
||
Function IsMenu(hMenu:pointer):integer;stdcall;external "User32.dll" name "IsMenu";
|
||
function DeleteMenu(hMenu:pointer;uPosition:integer;uFlags:integer):integer;stdcall;external "User32.dll" name "DeleteMenu"; //会销毁
|
||
Function GetMenuInfo(hMenu:pointer;lpcmi:pointer):integer;stdcall;external "User32.dll" name "GetMenuInfo";
|
||
Function SetMenuInfo(hMenu:pointer;lpcmi:pointer):integer;stdcall;external "User32.dll" name "SetMenuInfo";
|
||
Function GetSubMenu(hMenu:pointer;nPos:integer):pointer;stdcall;external "User32.dll" name "GetSubMenu";
|
||
Function GetSystemMenu(hWnd:pointer;bRevert:integer):pointer;stdcall;external "User32.dll" name "GetSystemMenu";
|
||
|
||
Function RemoveMenu( hMenu:pointer; uPosition:integer;uFlags:integer):integer;stdcall;external "User32.dll" name "RemoveMenu";
|
||
Function SetMenuItemInfoA( hMenu:pointer; uItem:integer;fByPosition:integer;lpmii:pointer):integer;stdcall;external "User32.dll" name "SetMenuItemInfoA";
|
||
Function InsertMenuItemA( hMenu:pointer;uItem:integer;fByPosition:integer;lpmii:pointer):integer;stdcall;external "User32.dll" name "InsertMenuItemA";
|
||
function AppendMenuA(hMenu:pointer;uFlags:integer;uIDNewItem:pointer; var lpNewItem:string):integer;stdcall ;external "User32.dll" name "AppendMenuA";
|
||
function HiliteMenuItem(hWnd:pointer; hMenu:pointer; uIDHiliteItem:integer; uHilite:integer):integer;stdcall;external "User32.dll" name "HiliteMenuItem";
|
||
Function GetMenuItemInfoA( hMenu:pointer; uItem:integer;fByPosition:integer;lpmii:pointer):integer;stdcall;external "User32.dll" name "GetMenuItemInfoA";
|
||
Function TrackPopupMenu( hMenu:pointer;uFlags:integer; x:integer; y:integer; nReserved:integer;hWnd:pointer; prcRect: array of integer):integer;stdcall;external "User32.dll" name "TrackPopupMenu";
|
||
function TrackPopupMenuEx(hMenu:pointer;uFlags:integer;x:integer;y:integer;hwnd:pointer;lptpm:pointer):integer;stdcall;external "User32.dll" name "TrackPopupMenuEx";
|
||
Function ModifyMenuA( hMenu:pointer; uItem:integer;fByPosition:integer;lpmii:pointer;lpNewItem:string):integer;stdcall;external "User32.dll" name "ModifyMenuA";
|
||
Function GetMenuStringA(hMenu:pointer; uIDItem:integer; var lpString:string; nMaxCount:integer;uFlag:integer):integer;stdcall;external "User32.dll" name "GetMenuStringA";
|
||
Function RedrawWindow(hWnd:pointer;lprcUpdate:array of integer; hrgnUpdate:pointer;flags:integer):integer;stdcall;external "User32.dll" name "RedrawWindow";
|
||
|
||
//***************window menu*************************
|
||
Function DrawMenuBar(hwd:pointer):integer;stdcall;external "User32.dll" name "DrawMenuBar";
|
||
Function SetMenu(hwd:pointer;hmenu:pointer):integer;stdcall;external "User32.dll" name "SetMenu";
|
||
Function GetMenu(hwd:pointer):pointer;stdcall;external "User32.dll" name "GetMenu";
|
||
//////////////////////////////////////////////////////////////
|
||
function open_chm(fn,pg);
|
||
begin
|
||
if ifstring(pg) and pg then
|
||
pm := format('%s::/%s.htm',fn,pg);
|
||
else pm := fn;
|
||
HtmlHelpA(GetDesktopWindow(),pm,0,nil);
|
||
end
|
||
function HtmlHelpA(hwndCaller:pointer;pszFile:string;uCommand:integer;dwData:pointer):pointer;stdcall;external "HHCTRL.OCX" name "HtmlHelpA";
|
||
//////////////////////////////////////////////////////////
|
||
//**********************************************
|
||
function GetDesktopWindow():pointer;stdcall;external "User32.dll" name "GetDesktopWindow";
|
||
Function GetDC(hwd :pointer):pointer;stdcall;external "User32.dll" name "GetDC";
|
||
function GetWindowDC(hWnd:pointer):pointer;stdcall;external "User32.dll" name "GetWindowDC";
|
||
Function GetDCEx(hwd :pointer;hrgnClip:pointer;flags:integer):pointer;stdcall;external "User32.dll" name "GetDCEx";
|
||
Function LoadImageA(hinst:pointer;lpszName:string; uType:integer; cxDesired:integer;cyDesired:integer;fuLoad:integer):pointer;stdcall;external "User32.dll" name "LoadImageA";
|
||
function LoadBitmapA(hin:pointer;lpsz:string):pointer;stdcall;external "User32.dll" name "LoadBitmapA";
|
||
function LoadBitmapA2(hin:pointer;lpsz:pointer):pointer;stdcall;external "User32.dll" name "LoadBitmapA";
|
||
Function LoadIconA(hd:pointer;n:string):pointer;stdcall;external "User32.dll" name "LoadIconA";
|
||
Function LoadIconA2(hd:pointer;n:pointer):pointer;stdcall;external "User32.dll" name "LoadIconA";
|
||
Function DrawTextA(hdc :pointer;txt:string;len:integer;rec:array of integer;fmt:integer):integer;stdcall;external "User32.dll" name "DrawTextA";
|
||
Function DrawTextExA(hdc :pointer;txt:string;len:integer;rec:array of integer;fmt:integer;lpdtp:pointer):integer;stdcall;external "User32.dll" name "DrawTextExA";
|
||
Function DrawFrameControl(DC:pointer; LPRECT: array of integer ; dr1 :integer;dr2:integer):integer;stdcall;external "User32.dll" name "DrawFrameControl";
|
||
function DrawEdge(hdc:pointer;var qrc:array of integer;edge:integer;grfFlags:integer):integer;;stdcall;external "User32.dll" name "DrawEdge";
|
||
function DrawFocusRect(hDC:pointer; var rect:array of integer):integer;stdcall;external "User32.dll" name "DrawFocusRect";
|
||
Function FillRect(dc:pointer;rec:array of integer;br:pointer):integer;stdcall;external "User32.dll" name "FillRect";
|
||
Function InvertRect(dc:pointer;rec:array of integer;br:pointer):integer;stdcall;external "User32.dll" name "InvertRect";
|
||
function ReleaseDC(hwd :pointer;hdc:pointer):integer;stdcall;external "User32.dll" name "ReleaseDC";
|
||
function BeginPaint(hwd :pointer;strc:pointer):pointer;stdcall;external "User32.dll" name "BeginPaint";
|
||
function EndPaint(hwd :pointer;strc:pointer):integer;stdcall;external "User32.dll" name "EndPaint";
|
||
function WindowFromDC(dc:pointer):pointer;stdcall;external "User32.dll" name "WindowFromDC";
|
||
function MessageBoxA(hwnd :pointer;txt:string;cap:string;flag:integer):integer;stdcall;external "User32.dll" name "MessageBoxA";
|
||
function TrackMouseEvent(lpEventTrack:pointer):integer;stdcall;external "User32.dll" name "TrackMouseEvent";
|
||
//Gdi32.dll
|
||
function SaveDC(hdc :pointer):integer;stdcall;external "Gdi32.dll" name "SaveDC";
|
||
function RestoreDC(hdc :pointer;nSavedDC:integer):integer;stdcall;external "Gdi32.dll" name "RestoreDC";
|
||
function DeleteDC(hdc :pointer):integer;stdcall;external "Gdi32.dll" name "DeleteDC";
|
||
{
|
||
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(WINGDI%2FCreateCompatibleDC);k(CreateCompatibleDC);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true
|
||
If the function succeeds, the return value is the handle to a memory DC.
|
||
If the function fails, the return value is NULL.
|
||
}
|
||
function CreateCompatibleDC(hdc :pointer):pointer;stdcall;external "Gdi32.dll" name "CreateCompatibleDC";
|
||
{
|
||
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(WINGDI%2FGetTextColor);k(GetTextColor);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true
|
||
}
|
||
Function GetTextColor(hdc :pointer):integer;stdcall;external "Gdi32.dll" name "GetTextColor";
|
||
Function SetTextColor(hdc :pointer;col:integer):integer;stdcall;external "Gdi32.dll" name "SetTextColor";
|
||
function GetTextExtentPoint32A(hdc:pointer;lpString:string;c:integer; psizl:pointer):integer;stdcall;external "Gdi32.dll" name "GetTextExtentPoint32A";
|
||
function GetTextExtentPoint32A2(hdc:pointer;lpString:string;c:integer; var psizl:array of integer):integer;stdcall;external "Gdi32.dll" name "GetTextExtentPoint32A";
|
||
function GetCharWidthA(hdc:pointer;iFirst:integer;iLast:integer;var lpBuffer:array of integer):integer;stdcall;external "Gdi32.dll" name "GetCharWidthA";
|
||
function GetCharABCWidthsA(hdc:pointer;wFirst:integer;wLast:integer; lpABC:pointer):integer;stdcall;external "Gdi32.dll" name "GetCharABCWidthsA";
|
||
function GetFontLanguageInfo(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "GetFontLanguageInfo";
|
||
Function SetDCPenColor(hdc :pointer;col:integer):integer;stdcall;external "Gdi32.dll" name "SetDCPenColor";
|
||
Function GetDCPenColor(hdc :pointer):integer;stdcall;external "Gdi32.dll" name "GetDCPenColor";
|
||
Function GetDCBrushColor(hdc :pointer):integer;stdcall;external "Gdi32.dll" name "GetDCBrushColor";
|
||
Function SetDCBrushColor(hdc :pointer;col:integer):integer;stdcall;external "Gdi32.dll" name "SetDCBrushColor";
|
||
{
|
||
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(WINGDI%2FRectangle);k(Rectangle);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true
|
||
}
|
||
Function Rectangle(hdc :pointer;l:integer;t:integer;r:integer;b:integer):integer;stdcall;external "Gdi32.dll" name "Rectangle";
|
||
Function Ellipse(hdc :pointer;l:integer;t:integer;r:integer;b:integer):integer;stdcall;external "Gdi32.dll" name "Ellipse";
|
||
Function RoundRect(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;stdcall;external "Gdi32.dll" name "RoundRect";
|
||
//Function Chord(hdc :pointer;l:integer;t:integer;r:integer;b:integer;wid:integer;ht:integer):integer;stdcall;external "Gdi32.dll" name "Chord";
|
||
Function Chord(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Chord";
|
||
Function Pie(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Pie";
|
||
Function SetArcDirection(hdc :pointer;direct:integer):integer;stdcall;external "Gdi32.dll" name "SetArcDirection";
|
||
Function Arc(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;nXRadial1:integer;nYRadial1:integer;nXRadial2:integer;nYRadial2:integer):integer;stdcall;external "Gdi32.dll" name "Arc";
|
||
Function Polygon(hdc :pointer;points:array of integer;n:integer):integer;stdcall;external "Gdi32.dll" name "Polygon";
|
||
Function PolyBezier(hdc :pointer;points:array of integer;n:integer):integer;stdcall;external "Gdi32.dll" name "PolyBezier";
|
||
Function SetPolyFillMode(hdc :pointer;md:integer):integer;stdcall;external "Gdi32.dll" name "SetPolyFillMode";
|
||
Function Polyline(hdc :pointer;points:array of integer;n:integer):integer;stdcall;external "Gdi32.dll" name "Polyline";
|
||
Function PolyPolyline(hdc :pointer;points:array of integer;pc:array of integer;n:integer):integer;stdcall;external "Gdi32.dll" name "PolyPolyline";
|
||
function ExtFloodFill(hdc:pointer;nXStart:integer; nYStart:integer;crColor:integer;fuFillType:integer):integer;stdcall;external "Gdi32.dll" name "ExtFloodFill";
|
||
function SetTextJustification(hdc:pointer;nBreakExtra:integer;nBreakCount:integer):integer;stdcall;external "Gdi32.dll" name "SetTextJustification";
|
||
function TransparentBlt( hdcDest:pointer; xoriginDest:integer; yoriginDest:integer; wDest:integer; hDest:integer;
|
||
hdcSrc:pointer; xoriginSrc:integer; yoriginSrc:integer; wSrc:integer; hSrc:integer; crTransparent:integer):integer;stdcall;external "Msimg32.dll" name "TransparentBlt";
|
||
function AlphaBlend( hdcDest:pointer; xoriginDest:integer; yoriginDest:integer; wDest:integer; hDest:integer;
|
||
hdcSrc:pointer; xoriginSrc:integer; yoriginSrc:integer; wSrc:integer; hSrc:integer; ftn:integer):integer;stdcall;external "Msimg32.dll" name "AlphaBlend";
|
||
function SetWindowExtEx(hdc:pointer;nXExtent:integer;nYExtent:integer;lpSize:pointer):integer;stdcall;external "Gdi32.dll" name "SetWindowExtEx";
|
||
function IntersectClipRect(hdc :pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer):integer;stdcall;external "Gdi32.dll" name "IntersectClipRect";
|
||
function GetDIBits(hdc:pointer; hbm:pointer;start:integer; cLines:integer;lpvBits:pointer;lpbmi:pointer; usage:integer):integer;stdcall;external "Gdi32.dll" name "GetDIBits";
|
||
function GetDIBits2(hdc:pointer; hbm:pointer;start:integer; cLines:integer;var lpvBits:string;lpbmi:pointer; usage:integer):integer;stdcall;external "Gdi32.dll" name "GetDIBits";
|
||
function SetDIBits2(hdc:pointer; hbmp:pointer;uStartScan:integer;cScanLines:integer;var lpvBits:string;lpbmi:pointer;fuColorUse:integer):integer;stdcall;external "Gdi32.dll" name "SetDIBits";
|
||
Function GetBitmapBits(bmp :pointer;len:integer;bf:pointer{var bf: array of integer }):integer;stdcall;external "Gdi32.dll" name "GetBitmapBits";
|
||
Function GetBitmapBits2(bmp :pointer;len:integer;var bf:string):integer;stdcall;external "Gdi32.dll" name "GetBitmapBits";
|
||
Function SetBitmapBits(bmp :pointer;len:integer;bf:pointer{var bf: array of integer }):integer;stdcall;external "Gdi32.dll" name "SetBitmapBits";
|
||
Function SetBitmapBits2(bmp :pointer;len:integer;var bf:string):integer;stdcall;external "Gdi32.dll" name "SetBitmapBits";
|
||
Function SetBitmapDimensionEx(hBitmap:pointer;nWidth:integer; nHeight:integer;VAR lpSize:array of integer):integer;stdcall;external "Gdi32.dll" name "SetBitmapDimensionEx";
|
||
Function GetBitmapDimensionEx(hBitmap:pointer;VAR ps:array of integer):integer;stdcall;external "Gdi32.dll" name "GetBitmapDimensionEx";
|
||
{
|
||
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=ZH-CN&k=k(WINGDI%2FGetTextMetrics);k(GetTextMetrics);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true
|
||
}
|
||
Function GetTextMetricsA(hdc :pointer;TM:pointer):integer;stdcall;external "Gdi32.dll" name "GetTextMetricsA";
|
||
Function MoveToEx(hdc :pointer;x:integer;y:integer;var point:array of integer):integer;stdcall;external "Gdi32.dll" name "MoveToEx" keepresident;
|
||
Function LineTo(hdc :pointer;x:integer;y:integer):integer;stdcall;external "Gdi32.dll" name "LineTo" keepresident;
|
||
Function TextOutA(hdc :pointer;X:integer;y:integer;txt:string;len:integer):integer;stdcall;external "Gdi32.dll" name "TextOutA";
|
||
//gdi path********************
|
||
function BeginPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "BeginPath";
|
||
function EndPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "EndPath";
|
||
function FillPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "FillPath";
|
||
function StrokePath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "StrokePath";
|
||
function StrokeAndFillPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "StrokeAndFillPath";
|
||
function AbortPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "AbortPath";
|
||
function CloseFigure(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "CloseFigure";
|
||
function FlattenPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "FlattenPath";
|
||
function GetMiterLimit(hdc:pointer;var plimit:Single):integer;stdcall;external "Gdi32.dll" name "GetMiterLimit";
|
||
function GetPath(hdc:pointer;apt:array of integer;aj:integer;cpt:integer):integer;stdcall;external "Gdi32.dll" name "GetPath";
|
||
function PathToRegion(hdc:pointer):pointer;stdcall;external "Gdi32.dll" name "PathToRegion";
|
||
function SetMiterLimit(hdc:pointer;limit:Single;var od:Single):integer;stdcall;external "Gdi32.dll" name "SetMiterLimit";
|
||
function WidenPath(hdc:pointer):integer;stdcall;external "Gdi32.dll" name "WidenPath";
|
||
function PatBlt(hdc:pointer;nleftrect:integer;ntoprect:integer;nwidth:integer;nheight:pointer;fdwrop:integer):integer;stdcall;external "Gdi32.dll" name "PatBlt";
|
||
|
||
Function BitBlt(hdcDest:pointer;nXDest:integer;nYDest:integer;nWidth:integer;nHeight:integer;
|
||
hdcSrc :pointer;nXSrc:integer;nYSrc:integer;dwRop:integer):integer;stdcall;external "Gdi32.dll" name "BitBlt";
|
||
Function StretchBlt(hdcDest:pointer;nXOriginDest:integer; nYOriginDest:integer;nWidthDest:integer; nHeightDest:integer;
|
||
hdcSrc :pointer;nXOriginSrc:integer;nYOriginSrc:integer; nWidthSrc:integer; nHeightSrc:integer; dwRop:integer
|
||
):integer;stdcall;external "Gdi32.dll" name "StretchBlt";
|
||
Function SetStretchBltMode(hdc:pointer;iStretchMode:integer):integer;stdcall;external "Gdi32.dll" name "SetStretchBltMode";
|
||
function SelectObject(hdc :pointer;gdiobj:pointer):pointer;stdcall;external "Gdi32.dll" name "SelectObject";
|
||
function DeleteObject(gdiobj :pointer):integer;stdcall;external "Gdi32.dll" name "DeleteObject";
|
||
function CreateBitmap(nWidth:integer; nHeight:integer; cPlanes:integer;cBitsPerPel:integer;
|
||
lpvBits:pointer):pointer;stdcall;external "Gdi32.dll" name "CreateBitmap";
|
||
function CreateBitmap2(nWidth:integer; nHeight:integer; cPlanes:integer;cBitsPerPel:integer;
|
||
var lpvBits:string):pointer;stdcall;external "Gdi32.dll" name "CreateBitmap";
|
||
function CreateBitmaplndirect(bmp:pointer):pointer;stdcall;external "Gdi32.dll" name "CreateBitmaplndirect";
|
||
function CreateCompatibleBitmap(hdc:pointer;x:integer;y:integer):pointer;stdcall;external "Gdi32.dll" name "CreateCompatibleBitmap";
|
||
function CreatePen(fnPenStyle:integer;nWidth:integer;crColor:integer):pointer;stdcall;external "Gdi32.dll" name "CreatePen";
|
||
function CreatePenIndirect(LOGPEN :pointer):pointer;stdcall;external "Gdi32.dll" name "CreatePen";
|
||
function CreateSolidBrush(crColor:integer):pointer;stdcall;external "Gdi32.dll" name "CreateSolidBrush";
|
||
function CreateBrushIndirect(Logb:pointer):pointer;stdcall;external "Gdi32.dll" name "CreateBrushIndirect";
|
||
function CreatePatternBrush(bmp:pointer):pointer;stdcall;external "Gdi32.dll" name "CreatePatternBrush";
|
||
function CreateHatchBrush(fnStyle:integer;clrref:integer):pointer;stdcall;external "Gdi32.dll" name "CreateHatchBrush";
|
||
function CreateFontA(nHeight:integer;nWidth:integer;nEscapement:integer; nOrientation:integer;fnWeight:integer;
|
||
fdwItalic:integer;fdwUnderline:integer;fdwStrikeOut:integer;fdwCharSet:integer;fdwOutputPrecision:integer;
|
||
fdwClipPrecision:integer; fdwQuality:integer; fdwPitchAndFamily:integer;lpszFace:string):pointer;stdcall;external "Gdi32.dll" name "CreateFontA";
|
||
function CreateFontIndirectA(lplf:pointer):pointer;stdcall;external "Gdi32.dll" name "CreateFontIndirectA";
|
||
//https://msdn.microsoft.com/zh-cn/library/windows/desktop/dd183436(v=vs.85).aspx clipping functions
|
||
function GetStockObject(fnObject:integer):pointer;stdcall;external "Gdi32.dll" name "GetStockObject";
|
||
function CreatePalette(LOGPALETTE:pointer):pointer;stdcall;external "Gdi32.dll" name "CreatePalette";
|
||
function GetDeviceCaps(dc:pointer;idex:integer):integer;stdcall;external "Gdi32.dll" name "GetDeviceCaps";
|
||
function SetPixel(dc:pointer;x:integer;y:integer;col:integer):integer;stdcall;external "Gdi32.dll" name "SetPixel";
|
||
function CreateEllipticRgn(nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer):pointer;stdcall;external "Gdi32.dll" name "CreateEllipticRgn";
|
||
|
||
function CreatePolyPolygonRgn(ps:array of integer;pc:array of integer;len:integer;md:integer):pointer;stdcall;external "Gdi32.dll" name "CreatePolyPolygonRgn";
|
||
function SetROP2(hdc:pointer;fnDrawMode:integer):integer;stdcall;external "Gdi32.dll" name "SetROP2";
|
||
function CreateRectRgn(nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer):pointer;stdcall;external "Gdi32.dll" name "CreateRectRgn";
|
||
function CreatePolygonRgn(ps:array of integer;len:integer;md:integer):pointer;stdcall;external "Gdi32.dll" name "CreatePolygonRgn";
|
||
function CombineRgn(hrgnDest:pointer;hrgnSrc1:pointer;hrgnSrc2:pointer; fnCombineMode:integer):integer;stdcall;external "Gdi32.dll" name "CombineRgn";
|
||
function SelectClipRgn(dc:pointer;rgn:pointer):integer;stdcall;external "Gdi32.dll" name "SelectClipRgn";
|
||
function PtVisible(dc:pointer;x:integer;y:integer):integer;stdcall;external "Gdi32.dll" name "PtVisible";
|
||
function RectVisible(dc:pointer;rect:array of integer):integer;stdcall;external "Gdi32.dll" name "RectVisible";
|
||
function ExcludeClipRect(hdc:pointer;nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer;):integer;stdcall;external "Gdi32.dll" name "ExcludeClipRect";
|
||
function SetWindowOrgEx(hdc:pointer;x:integer;y:integer;var lppt: array of integer):integer;stdcall;external "Gdi32.dll" name "SetWindowOrgEx";
|
||
function SetViewportOrg(dc:pointer;x:integer;y:integer):integer;stdcall;external "Gdi32.dll" name "SetViewportOrg";
|
||
function SetViewportOrgEx(dc:pointer;x:integer;y:integer;var pt:array of integer):integer;stdcall;external "Gdi32.dll" name "SetViewportOrgEx";
|
||
Function FillRgn(dc:pointer;rgn:pointer;br:pointer):integer;stdcall;external "Gdi32.dll" name "FillRgn";
|
||
Function SetTextAlign(dc:pointer;fMode:integer):integer;stdcall;external "Gdi32.dll" name "SetTextAlign";
|
||
Function SetWorldTransform(dc:pointer;lpXform:pointer):integer;stdcall;external "Gdi32.dll" name "SetWorldTransform";
|
||
Function SetGraphicsMode(dc:pointer;iMode:integer):integer;stdcall;external "Gdi32.dll" name "SetGraphicsMode";
|
||
Function GetGraphicsMode(dc:pointer):integer;stdcall;external "Gdi32.dll" name "GetGraphicsMode";
|
||
Function SetMapMode(dc:pointer;iMode:integer):integer;stdcall;external "Gdi32.dll" name "SetMapMode";
|
||
Function SetBkColor(dc:pointer;clrref:integer):integer;stdcall;external "Gdi32.dll" name "SetBkColor";
|
||
Function GetBkColor(dc:pointer):integer;stdcall;external "Gdi32.dll" name "GetBkColor";
|
||
Function SetBkMode(dc:pointer;clrref:integer):integer;stdcall;external "Gdi32.dll" name "SetBkMode";
|
||
Function GetBkMode(dc:pointer):integer;stdcall;external "Gdi32.dll" name "GetBkMode";
|
||
Function GetObjectA(hgdiobj:pointer;cbBuffer:integer;lpvObject:pointer):integer;stdcall;external "Gdi32.dll" name "GetObjectA";
|
||
//**************Comctl32.dll***************************************************************
|
||
procedure GetEffectiveClientRect(hWnd:pointer;lprc:array of integer;lpInfo:array of integer);stdcall;external "Comctl32.dll" name "GetEffectiveClientRect";
|
||
function ImageList_Add(himl:pointer;hbmImage:pointer; hbmMask:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_Add";
|
||
function ImageList_AddMasked(himl:pointer;hbmImage:pointer; crMask:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_AddMasked";
|
||
function ImageList_BeginDrag(himlTrack:pointer; iTrack:integer;dxHotspot:integer;dyHotspot:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_BeginDrag";
|
||
function ImageList_DragMove(x:integer;y:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragMove";
|
||
function ImageList_DragEnter(hwndLock:pointer;x:integer;y:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragEnter";
|
||
function ImageList_DragLeave(hwndLock:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragLeave";
|
||
procedure ImageList_EndDrag();stdcall;external "Comctl32.dll" name "ImageList_EndDrag";
|
||
function ImageList_Create(cx:integer; cy:integer; flags:integer; cInitial:integer;cGrow:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_Create";
|
||
function ImageList_Draw(himl:pointer;i:integer;hdcDst:pointer;x:integer;y:integer;fStyle:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_Draw";
|
||
function ImageList_Destroy(himl:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_Add";
|
||
function ImageList_Replace(himl:pointer;id:integer;hbmImage:pointer; hbmMask:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_Replace";
|
||
function ImageList_Remove(himl:pointer;id:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_Remove";
|
||
function ImageList_SetBkColor(himl:pointer;clrBk:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_SetBkColor";
|
||
function ImageList_LoadImageA2(hi:pointer;lpbmp:pointer;cx:integer;cGrow:integer; crMask:integer;uType:integer;uFlags:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_LoadImageA";
|
||
function ImageList_GetBkColor(himl:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_GetBkColor";
|
||
function ImageList_GetDragImage(ppt:pointer;pptHotspot:pointer):pointer;stdcall;external "Comctl32.dll" name "ImageList_GetDragImage";
|
||
function ImageList_GetImageCount(himl:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_GetImageCount";
|
||
function ImageList_SetImageCount(himl:pointer;clrBk:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_SetImageCount";
|
||
function ImageList_Copy(himlDst:pointer;iDst:integer; himlSrc:pointer;iSrc:integer;uFlags:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_Copy";
|
||
function ImageList_Duplicate(himl:pointer):pointer;stdcall;external "Comctl32.dll" name "ImageList_Duplicate";
|
||
function ImageList_Merge(himl1:pointer;i1:integer;himl2:pointer;i2:integer;dx:integer;dy:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_Merge";
|
||
function ImageList_SetDragCursorImage(himlDrag:pointer;iDrag:integer;dxHotspot:integer;dyHotspot:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_SetDragCursorImage";
|
||
function ImageList_GetImageInfo(himl:pointer; i:integer;pImageInfo:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_GetImageInfo";
|
||
function ImageList_ReplaceIcon(himl:pointer;i:integer;hicon:pointer):integer;stdcall;external "Comctl32.dll" name "ImageList_ReplaceIcon";
|
||
function ImageList_SetIconSize(himl:pointer;cx:integer;cy:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_SetIconSize";
|
||
function ImageList_GetIconSize(himl:pointer;var cx:integer;var cy:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_GetIconSize";
|
||
function ImageList_GetIcon(himl:pointer;i:integer;flags:integer):pointer;stdcall;external "Comctl32.dll" name "ImageList_GetIcon";
|
||
function ImageList_DrawIndirect(pimldp:pointer):pointer;stdcall;external "Comctl32.dll" name "ImageList_DrawIndirect";
|
||
function ImageList_DragShowNolock(fShow:integer):integer;stdcall;external "Comctl32.dll" name "ImageList_DragShowNolock";
|
||
function InitCommonControlsEx(it:pointer):integer;stdcall;external "Comctl32.dll" name "InitCommonControlsEx";
|
||
function Comctl32DllGetVersion(it:pointer):pointer;stdcall;external "Comctl32.dll" name "DllGetVersion";
|
||
function GetOpenFileNameA(LPOPENFILENAMEA:pointer):integer;stdcall;external "Comdlg32.dll" name "GetOpenFileNameA" keepresident;
|
||
function GetSaveFileNameA(LPOPENFILENAMEA:pointer):integer;stdcall;external "Comdlg32.dll" name "GetSaveFileNameA";
|
||
function ChooseFontA(LOGFONTA:pointer):integer;stdcall;external "Comdlg32.dll" name "ChooseFontA";
|
||
function ChooseColorA(LOGFONTA:pointer):integer;stdcall;external "Comdlg32.dll" name "ChooseColorA";
|
||
//************************************
|
||
|
||
function SHGetSpecialFolderPathA(hwnd:pointer;var path:string;csidl:integer;ifcreate:integer):integer;stdcall;external "Shell32.dll" name "SHGetSpecialFolderPathA";
|
||
function Shell_NotifyIconA(dwMessage:integer; lpData:pointer):integer;stdcall;external "Shell32.dll" name "Shell_NotifyIconA";
|
||
function ILCreateFromPathA(pszPath:string):pointer;stdcall;external "Shell32.dll" name "ILCreateFromPathA";
|
||
procedure ILFree(pidl:pointer);stdcall;external "Shell32.dll" name "ILFree";
|
||
function SHBrowseForFolderA(LPITEMIDLIST:pointer):pointer;stdcall;external "Shell32.dll" name "SHBrowseForFolderA";
|
||
function SHGetPathFromIDListA(LPBROWSEINFOA:pointer;var buf:string ):integer;stdcall;external "Shell32.dll" name "SHGetPathFromIDListA";
|
||
function shell32DllGetVersion(it:pointer):pointer;stdcall;external "Shell32.dll" name "DllGetVersion";
|
||
function ShellExecuteExA(pExecInfo :pointer):integer;stdcall;external "Shell32.dll" name "ShellExecuteExA";
|
||
function SHGetFolderPathA(hwnd:pointer;csidl:integer;hToken:pointer;dwFlags:integer;var pszPath:string):integer;stdcall;external "Shell32.dll" name "SHGetFolderPathA";
|
||
//socket
|
||
function socket(af:integer;tp:integer;protocol:integer):pointer;stdcall;external "Ws2_32.dll" name "socket";
|
||
function WSAStartup(af:SHORT;DA:pointer):integer;stdcall;external "Ws2_32.dll" name "WSAStartup";
|
||
function WSACleanup():integer;stdcall;external "Ws2_32.dll" name "WSACleanup";
|
||
function htonl(hostlong:integer):integer;stdcall;external "Ws2_32.dll" name "htonl";
|
||
function htons(hostshort:short):short;stdcall;external "Ws2_32.dll" name "htons";
|
||
function ntohs(hostshort:short):short;stdcall;external "Ws2_32.dll" name "ntohs";
|
||
function bind(s:pointer;name:pointer;len:integer):integer;stdcall;external "Ws2_32.dll" name "bind";
|
||
function accept(s:pointer;name:pointer;var len:integer):pointer;stdcall;external "Ws2_32.dll" name "accept";
|
||
function send(s:pointer;bufer:string;len:integer;flag:integer):integer;stdcall;external "Ws2_32.dll" name "send";
|
||
function recv(s:pointer;var bufer:string;len:integer;flag:integer):integer;stdcall;external "Ws2_32.dll" name "recv";
|
||
function listen(s:pointer;port:integer):integer;stdcall;external "Ws2_32.dll" name "listen";
|
||
function closesocket(s:pointer):integer;stdcall;external "Ws2_32.dll" name "closesocket";
|
||
function connect(s:pointer;name:pointer;len:integer):integer;stdcall;external "Ws2_32.dll" name "connect";
|
||
function inet_addr(s:string):integer;stdcall;external "Ws2_32.dll" name "inet_addr";
|
||
function WSAGetLastError():integer;stdcall;external "Ws2_32.dll" name "WSAGetLastError";
|
||
function inet_ntoa(ad:integer):string;stdcall;external "Ws2_32.dll" name "inet_ntoa";
|
||
function shutdown(s:pointer;how:integer):integer;stdcall;external "Ws2_32.dll" name "shutdown";
|
||
function WSAAsyncSelect(s:pointer;hWnd:pointer;wMsg:integer;lEvent:integer):integer;stdcall;external "Ws2_32.dll" name "WSAAsyncSelect";
|
||
function ioctlsocket(s:pointer;cmd:integer;var argp:integer):integer;stdcall;external "Ws2_32.dll" name "ioctlsocket";
|
||
function setsockopt(s:pointer;level:integer;optname:integer;optval:string;optlen:integer):integer;stdcall;external "Ws2_32.dll" name "setsockopt";
|
||
function getsockopt(s:pointer;level:integer;optname:integer;var optval:string;var optlen:integer):integer;stdcall;external "Ws2_32.dll" name "getsockopt";
|
||
end
|
||
implementation
|
||
function tslvclproc(hwnd:pointer;message:integer;wparam:pointer;lparam:pointer):pointer;stdcall; //回调
|
||
begin
|
||
gfw := class(tUIglobalData).uigetdata("G_F_TWIN_PROC_");
|
||
if gfw then
|
||
return call(gfw,hWnd,message,wparam,lparam);
|
||
return 0;
|
||
end
|
||
function init(); //加载
|
||
begin
|
||
global g_windows_proc_handle;//
|
||
if not g_windows_proc_handle then
|
||
begin
|
||
g_windows_proc_handle := makeinstance(thisfunction(tslvclproc));
|
||
end
|
||
try
|
||
SetProcessDpiAwareness(2); //shez dpi感知
|
||
except
|
||
end
|
||
end
|
||
function uninit();//卸载
|
||
begin
|
||
global g_windows_proc_handle;
|
||
if g_windows_proc_handle then
|
||
begin
|
||
deleteinstance(g_windows_proc_handle);
|
||
g_windows_proc_handle := nil;
|
||
end
|
||
end
|
||
function SetProcessDpiAwareness(v:integer):pointer;stdcall; external "Shcore.dll" name "SetProcessDpiAwareness";
|
||
initialization
|
||
init();
|
||
finalization
|
||
uninit();
|
||
end. |