diff --git a/funcext/tvclib/getdlsymaddress.tsf b/funcext/tvclib/getdlsymaddress.tsf index e52eced..47c6ecf 100644 --- a/funcext/tvclib/getdlsymaddress.tsf +++ b/funcext/tvclib/getdlsymaddress.tsf @@ -2,9 +2,9 @@ function getdlsymaddress(lib,n); // begin if not(ifstring(lib) and lib and n and ifstring(n)) then return 0; {$ifdef linux} - Return dlsym(dlopen(lib,0x101) ,n); + Return dlsym(dlopen(lib,0x101) ,n); {$endif} - Return GetProcAddress(LoadLibraryA(lib),n); + Return GetProcAddress(LoadLibraryA(lib),n); end function dlopen(dl:string;flg:integer):pointer;cdecl ;external "libdl.so.2"; function dlsym(handle:pointer;symbol:string):pointer;cdecl ;external "libdl.so.2"; diff --git a/funcext/tvclib/ugtkinterface.tsf b/funcext/tvclib/ugtkinterface.tsf index 0b7778d..6188d2a 100644 --- a/funcext/tvclib/ugtkinterface.tsf +++ b/funcext/tvclib/ugtkinterface.tsf @@ -17,7 +17,7 @@ type tgtkeventobject =class(tgtk_ctl_object) //gtk end type tsgtkapi = class(tgtkapis) - class function AnsiToWidChar(c); + function AnsiToWidChar(c); begin if not ifstring(c) then return ""; return c; @@ -575,7 +575,7 @@ type tsgtkapi = class(tgtkapis) end ///////////////////////空接口 - class function GetModuleHandleA(name:pointer)begin return 1; end; + function GetModuleHandleA(name:pointer)begin return 1; end; function SetClassLongPtrA(HH:pointer;idx:integer;dwNewLong:pointer)begin end; function GetClassLongPtrA(HH:pointer;idx:integer)begin end; @@ -630,11 +630,11 @@ type tsgtkapi = class(tgtkapis) end end end - class function MultiByteToWideChar_a(CodePage:integer;dwFlags:integer;lpMultiByteStr:string;cbMultiByte:integer;var lpWideCharStr:string;cchWideChar:integer):integer; + function MultiByteToWideChar_a(CodePage:integer;dwFlags:integer;lpMultiByteStr:string;cbMultiByte:integer;var lpWideCharStr:string;cchWideChar:integer):integer; begin end - class function GetEncoderClsid(n:String;ed:pointer):integer; + function GetEncoderClsid(n:String;ed:pointer):integer; begin WriteStringToPtr(ed,n); //保存 return -1; @@ -2217,7 +2217,7 @@ type tsgtkapi = class(tgtkapis) //////////////////////////////////////end clip board ////////////////////////////////// //////////////////////////////timmer////////////////// - class function SetTimer(hWnd:pointer; nIDEvent:pointer; uElapse:integer;lpTimerFunc:pointer):integer; + function SetTimer(hWnd:pointer; nIDEvent:pointer; uElapse:integer;lpTimerFunc:pointer):integer; begin global g_gtk_ttimer_cache; if not ifarray(g_gtk_ttimer_cache) then g_gtk_ttimer_cache := array(); @@ -2227,7 +2227,7 @@ type tsgtkapi = class(tgtkapis) obj._setvalue_(0,rt); return rt; end - class function KillTimer(hWnd:pointer; nIDEvent:pointer):integer; + function KillTimer(hWnd:pointer; nIDEvent:pointer):integer; begin global g_gtk_ttimer_cache; if not ifarray(g_gtk_ttimer_cache) then return 0; @@ -2844,7 +2844,7 @@ type tgtkapis = class() //gtk b := getbvalue(c)/0xff ; return true; end - class function gtk_object_set_data(h,n,v); //保存数据 + function gtk_object_set_data(h,n,v); //保存数据 begin if not(h>0 or h<0) then return 0; global gtk_object_data_values_global; @@ -2858,7 +2858,7 @@ type tgtkapis = class() //gtk gtk_object_data_values_global[inttostr(h),n] := v; //echo tostn(gtk_object_data_values_global); end - class function gtk_object_get_data(h,n); //获得数据 + function gtk_object_get_data(h,n); //获得数据 begin if not(h>0 or h<0) then return 0; global gtk_object_data_values_global; @@ -3549,6 +3549,7 @@ type tgtkapis = class() //gtk /////////////////////////window////////// + function gtk_window_list_toplevels():pointer;cdecl;external 'libgtk-3.so'; procedure gdk_window_move_resize(w:pointer;x:integer;y:integer;wd:integer;h:integer);cdecl;external 'libgtk-3.so'; procedure gdk_window_resize(w:pointer;wd:integer;h:integer);cdecl;external 'libgtk-3.so'; procedure gtk_window_begin_move_drag(w:pointer;btn:integer;x:integer;y:integer;t:integer);cdecl;external 'libgtk-3.so'; @@ -3783,8 +3784,7 @@ type tgtkapis = class() //gtk end procedure gtk_widget_set_parent_window(w:pointer;p:pointer);cdecl;external 'libgtk-3.so'; procedure gtk_widget_get_parent_window(w:pointer;p:pointer);cdecl;external 'libgtk-3.so'; - function gtk_widget_get_type():pointer;cdecl;external 'libgtk-3.so'; - + function gtk_widget_get_type():pointer;cdecl;external 'libgtk-3.so'; procedure gtk_widget_modify_bg(w:pointer;tyle:integer;c:pointer);cdecl;external 'libgtk-3.so'; procedure gtk_layout_move(l:pointer;w:pointer;x:integer;y:integer);cdecl;external 'libgtk-3.so'; procedure gtk_grab_add(w:pointer);cdecl;external 'libgtk-3.so'; @@ -3847,6 +3847,35 @@ type tgtkapis = class() //gtk function gtk_image_new():pointer; cdecl;external 'libgtk-3.so'; function gdk_pixbuf_get_width(src_pixbuf:pointer):integer;cdecl;external 'libgtk-3.so'; function gdk_pixbuf_get_height(src_pixbuf:pointer):integer;cdecl;external 'libgtk-3.so'; + ////////////////////libc//////////////////////////////// + function popen(e:string;f:string):pointer;cdecl;external "libc.so.6"; + function pclose(p:pointer):integer;cdecl;external "libc.so.6"; + function fgets(var e:string;f:integer;ptr:pointer):pointer;cdecl;external "libc.so.6"; + function exec_command_line(cmd) + begin + len := 1024; + buf_ps := ""; + setlength(buf_ps,len); + result := ""; + ptr:=popen(cmd, "r"); + if((ptr)<>0) then + begin + while(fgets(buf_ps, len, ptr)<>0) do + begin + for i:= 1 to len do + begin + vi := buf_ps[i]; + if vi="\0" then + begin + break; + end + result += buf_ps[i]; + end + end + pclose(ptr); + end + return result; + end end @@ -5828,10 +5857,10 @@ type tgtk_ctl_object = class(_gtkeventtype) static _const; private FHandle; - class function gtk_widget_get_type():pointer;cdecl;external 'libgtk-3.so'; - class procedure g_signal_handler_disconnect(instance:pointer;id:integer);cdecl;external 'libgtk-3.so'; - class function g_signal_connect_data(instance:pointer; detailed_signal:string; c_handler:pointer;data:pointer;dd:pointer;f:integer):pointer;cdecl;external 'libgtk-3.so'; - class function g_signal_new(signal_name:string; + function gtk_widget_get_type():pointer;cdecl;external 'libgtk-3.so'; + procedure g_signal_handler_disconnect(instance:pointer;id:integer);cdecl;external 'libgtk-3.so'; + function g_signal_connect_data(instance:pointer; detailed_signal:string; c_handler:pointer;data:pointer;dd:pointer;f:integer):pointer;cdecl;external 'libgtk-3.so'; + function g_signal_new(signal_name:string; itype:pointer; signal_flags:integer; class_offset:integer; @@ -5868,7 +5897,7 @@ type tgtk_ctl_object = class(_gtkeventtype) return true; end end - class function initNewSingal(); + function initNewSingal(); begin return ; //wm-user diff --git a/funcext/tvclib/uwindowsinterface.tsf b/funcext/tvclib/uwindowsinterface.tsf index b435a82..00ce12b 100644 --- a/funcext/tvclib/uwindowsinterface.tsf +++ b/funcext/tvclib/uwindowsinterface.tsf @@ -55,7 +55,7 @@ type twindowsapi = class() return ret; end ////////////////////////////////////////////////////////////////////////////////////////////////////// - class function AnsiToWidChar(c); + function AnsiToWidChar(c); begin if not ifstring(c) then return ""; iSize := MultiByteToWideChar_a(0, 0, C , -1, "", 0); @@ -65,7 +65,7 @@ type twindowsapi = class() MultiByteToWideChar_a(0, 0, c , -1, pwszUnicode , iSize-1); return pwszUnicode; end - class function GetEncoderClsid(n:String;ed:pointer); + function GetEncoderClsid(n:String;ed:pointer); begin r := tslvclgetencoderclsid(n,ed); return r; @@ -129,17 +129,17 @@ type twindowsapi = class() global g_windows_proc_handle; return g_windows_proc_handle; end - class function SetTimer(hWnd:pointer; nIDEvent:pointer; uElapse:integer;lpTimerFunc:pointer):integer;stdcall;external "User32.dll" name "SetTimer"; - class function KillTimer(hWnd:pointer; nIDEvent:pointer):integer;stdcall;external "User32.dll" name "KillTimer"; + 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"; - class function MultiByteToWideChar_a(CodePage:integer;dwFlags:integer;lpMultiByteStr:string;cbMultiByte:integer;var lpWideCharStr:string;cchWideChar:integer):integer;stdcall;external "Kernel32.dll" name "MultiByteToWideChar"; - class function GetModuleHandleA(name:pointer):pointer;stdcall;external "Kernel32.dll" name "GetModuleHandleA"; - class function GetComputerNameA(var lpBuffer:string;var nSize:integer):integer;stdcall;external "Kernel32.dll" name "GetComputerNameA"; - class function GetLastError():integer;stdcall;external "Kernel32.dll" name "GetLastError"; - class function GetEnvironmentVariableA(lpName:string;lpBuffer:string;nSize:integer):integer;stdcall;external "Kernel32.dll" name "GetEnvironmentVariableA"; - class function SetEnvironmentVariableA(lpName:string; lpValue:string):integer;stdcall;external "Kernel32.dll" name "SetEnvironmentVariableA"; - class function GetLogicalDriveStringsA(BUFSIZE:integer; szLogicDriveStrings:string):integer;stdcall;external "Kernel32.dll" name "GetLogicalDriveStringsA"; - class function GetDiskFreeSpaceExA(lpDirectoryName:string;var lpFreeBytesAvailableToCaller:int64;var lpTotalNumberOfBytes:int64;var lpTotalNumberOfFreeBytes:int64):integer;stdcall ;external "Kernel32.dll" name "GetDiskFreeSpaceExA"; + 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"; @@ -246,15 +246,15 @@ type twindowsapi = class() function GetKeyNameTextA(lParam:integer;var lpString:string;cchSize:integer):integer;stdcall;external "User32.dll" name "GetKeyNameTextA"; //窗口相关 - class function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA"; - class function GetForegroundWindow():pointer;stdcall;external "User32.dll" name "GetForegroundWindow"; - class function GetActiveWindow():pointer;stdcall;external "User32.dll" name "GetActiveWindow"; - class function SetActiveWindow(h:pointer):pointer;stdcall;external "user32.dll" name "SetActiveWindow"; + 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"; - class function IsWindow(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindow"; - class function IsWindowVisible(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindowVisible"; + function IsWindow(hd:pointer):integer;stdcall;external "User32.dll" name "IsWindow"; + 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); @@ -271,6 +271,7 @@ type twindowsapi = class() function ForegroundWindow(wnd_); begin if not (wnd_>0 or wnd_<0) then return 0; + ShowWindow(wnd_,1); SetWindowPos(wnd_, 0xFFFFFFFF, 0, 0, 0, 0, 1 .| 2); SetWindowPos(wnd_, 0xFFFFFFFE, 0, 0, 0, 0, 1 .| 2); return 1;