536 lines
15 KiB
ObjectPascal
536 lines
15 KiB
ObjectPascal
unit spmain;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, Menus, ComCtrls, ToolWin, ActnMan, ActnCtrls, ActnMenus, ActnList, DB,
|
||
ADODB, Grids, IniFiles, jpeg, ExtCtrls, Buttons, ImgList, StdCtrls, cxControls,
|
||
cxSplitter, MovePanel, SyncObjs, System.ImageList, cxGraphics, cxLookAndFeels,
|
||
cxLookAndFeelPainters, cxButtons;
|
||
|
||
type
|
||
TMyThread = class(TThread)
|
||
protected
|
||
procedure Execute; override;
|
||
end;
|
||
|
||
const
|
||
keys = 'ljb^0122!@#*&^%$';
|
||
|
||
type
|
||
TFormMain = class(TForm)
|
||
StatusBar1: TStatusBar;
|
||
ADOConnection1: TADOConnection;
|
||
ImageList25: TImageList;
|
||
ImageList3: TImageList;
|
||
ImageList24: TImageList;
|
||
ADQ_Temp: TADOQuery;
|
||
Image_Tree: TImageList;
|
||
ADOQueryTmp: TADOQuery;
|
||
Timer2: TTimer;
|
||
MovePanel1: TMovePanel;
|
||
Panel1: TPanel;
|
||
Panel2: TPanel;
|
||
Panel3: TPanel;
|
||
Timer_link: TTimer;
|
||
Panel4: TPanel;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure MNCloseClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure Timer1Timer(Sender: TObject);
|
||
procedure FormResize(Sender: TObject);
|
||
procedure N2Click(Sender: TObject);
|
||
procedure Timer2Timer(Sender: TObject);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure ToolButton12Click(Sender: TObject);
|
||
procedure Panel1Click(Sender: TObject);
|
||
procedure Panel2Click(Sender: TObject);
|
||
procedure Panel3Click(Sender: TObject);
|
||
procedure Timer_linkTimer(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure Panel4Click(Sender: TObject);
|
||
private
|
||
{ Private declarations }
|
||
function intiData(): Boolean;
|
||
procedure GetServerDate();
|
||
procedure InitDllEvt(FromFile: string; FormID: Integer; Para: string; FormType: Integer; Title: string; Def1: string; Def2: string; Def3: string; Def4: string; Def5: string; Def6: string; Def7: string; Def8: string; Def9: string; Def10: string);
|
||
public
|
||
procedure threadLoadDll(mFileName: string);
|
||
{ Public declarations }
|
||
// server, dtbase, user, pswd: String;
|
||
end;
|
||
|
||
var
|
||
FormMain: TFormMain;
|
||
gServerDate: TdateTime;
|
||
server, dtbase, user, pswd: string; {<7B><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>}
|
||
gConString: string; {ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>}
|
||
gCurHandle: hwnd; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
V_User, V_UserID, User_Id, User_Name: string;
|
||
newh: hwnd;
|
||
ConDateBaseString: string;
|
||
CriticalSection: TCriticalSection; {<7B><><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD>}
|
||
|
||
implementation
|
||
|
||
uses
|
||
logon, U_Link, U_iniParam, U_staffSeList;
|
||
{$R *.dfm}
|
||
|
||
procedure TMyThread.Execute;
|
||
begin
|
||
FreeOnTerminate := True;
|
||
CriticalSection.Enter;
|
||
try
|
||
with FormMain.ADOQueryTmp do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
sql.Add('select getdate()');
|
||
open;
|
||
end;
|
||
except
|
||
try
|
||
with FormMain.ADOConnection1 do
|
||
begin
|
||
Connected := false;
|
||
ConnectionString := ConDateBaseString;
|
||
LoginPrompt := false;
|
||
Connected := true;
|
||
end;
|
||
except
|
||
|
||
end;
|
||
end;
|
||
CriticalSection.Leave;
|
||
end;
|
||
|
||
function TFormMain.intiData(): Boolean;
|
||
var
|
||
mProdId: string; //<2F><>ǰ<EFBFBD><C7B0>Ʒ<EFBFBD><C6B7>
|
||
begin
|
||
SetLength(server, 255);
|
||
SetLength(dtbase, 255);
|
||
SetLength(user, 255);
|
||
SetLength(pswd, 255);
|
||
|
||
server := '';
|
||
dtbase := '';
|
||
user := 'sa';
|
||
pswd := 'rightsoft@123';
|
||
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Password=' + pswd + ';Persist Security Info=True;User ID=' + user + ';Initial Catalog=' + dtbase + ';Data Source=' + server;
|
||
// ConDateBaseString:=ADOConnection1.ConnectionString;
|
||
try
|
||
frmLink := TfrmLink.create(self);
|
||
if frmLink.ShowModal = 1 then
|
||
begin
|
||
ADOConnection1.ConnectionString := frmLink.fADOConnString;
|
||
frmLink.hide;
|
||
end
|
||
else
|
||
begin
|
||
application.MessageBox('ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONERROR);
|
||
PostMessage(Handle, WM_CLOSE, 0, 0);
|
||
frmLink.Release;
|
||
end;
|
||
except
|
||
application.MessageBox('ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_ICONERROR);
|
||
PostMessage(Handle, WM_CLOSE, 0, 0);
|
||
end;
|
||
ConDateBaseString := ADOConnection1.ConnectionString;
|
||
Left := 0;
|
||
Top := 0;
|
||
Width := Screen.Width;
|
||
Height := Screen.Height;
|
||
|
||
try
|
||
ADOConnection1.Close;
|
||
ADOConnection1.Open;
|
||
Result := true;
|
||
except
|
||
result := false;
|
||
application.MessageBox('<27><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><><EFBFBD><EFBFBD>', mb_Ok + MB_ICONERROR);
|
||
PostMessage(self.handle, WM_CLOSE, 0, 0);
|
||
end;
|
||
end;
|
||
|
||
procedure TFormMain.FormCreate(Sender: TObject);
|
||
type
|
||
TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
|
||
var
|
||
Tf: TMyFunc;
|
||
Tp: TFarProc;
|
||
Th: Thandle;
|
||
newh: hwnd;
|
||
tmpstr: string;
|
||
begin
|
||
if IsINIFile() then
|
||
ReadINIFile()
|
||
else
|
||
WriteINIFile;
|
||
|
||
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||
readTradeInspINIFile();
|
||
StatusBar1.Panels[3].Text := '<27><>̨<EFBFBD><CCA8>Ա:' + gMachOperators;
|
||
//
|
||
if intiData() then
|
||
begin
|
||
GetServerDate();
|
||
// P_Tmp.Visible := True;
|
||
//P_Tmp.Align := AlClient;
|
||
try
|
||
FormLogon := TFormLogon.Create(self);
|
||
FormLogon.ShowModal;
|
||
finally
|
||
FormLogon.free;
|
||
end;
|
||
|
||
end;
|
||
|
||
// Th := LoadLibrary('FileUpdate.dll');
|
||
// if Th > 0 then
|
||
// begin
|
||
// try
|
||
// Tp := GetProcAddress(Th, 'GetDllForm');
|
||
// if Tp <> nil then
|
||
// begin
|
||
// Tf := TMyFunc(Tp);
|
||
// newh:=Tf(Application,0,2,0,0,
|
||
// PChar(User_Id),
|
||
// PChar(User_Name),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(''),PChar(ConDateBaseString));
|
||
// end
|
||
// else
|
||
// begin
|
||
// ShowMessage('<27><>ӡִ<D3A1>д<EFBFBD><D0B4><EFBFBD>');
|
||
// end;
|
||
// finally
|
||
// // FreeLibrary(Th);
|
||
// end;
|
||
// end
|
||
// else
|
||
// begin
|
||
// ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>FileUpdate.dll');
|
||
// end;
|
||
|
||
WriteINIFile;
|
||
CriticalSection := TCriticalSection.Create;
|
||
end;
|
||
|
||
procedure TFormMain.FormResize(Sender: TObject);
|
||
begin
|
||
sendmessage(newh, 1034, 1, 0);
|
||
// Panel1Click(Panel1);
|
||
end;
|
||
|
||
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
var
|
||
CanQuit: Boolean;
|
||
begin
|
||
sendmessage(newh, 1034, 4, 0);
|
||
if FormMain.MDICHildCount > 0 then
|
||
CanQuit := application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?', '<27><>ʾ', mb_yesno + mb_IconQuestion) = idyes;
|
||
if CanQuit then
|
||
begin
|
||
Timer2.Enabled := false;
|
||
ADOConnection1.Close;
|
||
Action := CaFree;
|
||
end
|
||
else
|
||
Action := caNone;
|
||
end;
|
||
|
||
procedure TFormMain.MNCloseClick(Sender: TObject);
|
||
begin
|
||
close;
|
||
end;
|
||
|
||
procedure TFormMain.Timer1Timer(Sender: TObject);
|
||
begin
|
||
try
|
||
statusbar1.Panels[0].Text := '<27><>ǰʱ<C7B0>䣺' + datetimetostr(now);
|
||
except
|
||
end;
|
||
end;
|
||
|
||
procedure TFormMain.N2Click(Sender: TObject);
|
||
begin
|
||
end;
|
||
///////////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>
|
||
////////////////////////////////////////////////
|
||
|
||
procedure TFormMain.GetServerDate();
|
||
begin
|
||
with ADOQueryTmp do
|
||
begin
|
||
close;
|
||
sql.clear;
|
||
sql.Add('select getDate()as dt');
|
||
Open;
|
||
gServerDate := fieldByName('dt').AsDateTime;
|
||
close;
|
||
end;
|
||
end;
|
||
|
||
procedure TFormMain.Timer2Timer(Sender: TObject);
|
||
begin
|
||
FormMain.StatusBar1.Panels[0].Text := '<27><>ǰʱ<C7B0>䣺' + datetimetostr(now);
|
||
end;
|
||
|
||
procedure TFormMain.FormShow(Sender: TObject);
|
||
var
|
||
XSStr: string;
|
||
begin
|
||
try
|
||
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'FileKPZ.INI');
|
||
Panel1.Caption := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1', '<27>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>');
|
||
Panel3.Caption := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2', 'ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
XSStr := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'ģ<><C4A3><EFBFBD><EFBFBD>ʾ1', '1');
|
||
if XSStr = '1' then
|
||
begin
|
||
Panel1.Visible := True;
|
||
end
|
||
else
|
||
begin
|
||
Panel1.Visible := False;
|
||
end;
|
||
XSStr := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'ģ<><C4A3><EFBFBD><EFBFBD>ʾ2', '0');
|
||
if XSStr = '1' then
|
||
begin
|
||
Panel3.Visible := True;
|
||
end
|
||
else
|
||
begin
|
||
Panel3.Visible := False;
|
||
end;
|
||
finally
|
||
IniFile.Free;
|
||
end;
|
||
|
||
with ADOQueryTmp do
|
||
begin
|
||
close;
|
||
sql.clear;
|
||
sql.add('SELECT DB = MAX(CASE WHEN ModuleSubID = ''M00017'' THEN 1 ELSE 0 END), ');
|
||
sql.add(' DJ = MAX(CASE WHEN ModuleSubID = ''M00013'' THEN 1 ELSE 0 END) ');
|
||
sql.add(' FROM SY_Purview WHERE UserID =''' + trim(User_Id) + ''' AND ModuleID = ''601'' AND ModuleSubID IN (''M00017'', ''M00013''); ');
|
||
Open;
|
||
end;
|
||
if ADOQueryTmp.FieldByName('DB').AsInteger = 1 then
|
||
begin
|
||
Panel1.Visible := True;
|
||
end
|
||
else
|
||
begin
|
||
Panel1.Visible := False;
|
||
end;
|
||
if ADOQueryTmp.FieldByName('DJ').AsInteger = 1 then
|
||
begin
|
||
Panel3.Visible := True;
|
||
end
|
||
else
|
||
begin
|
||
Panel3.Visible := False;
|
||
end;
|
||
WriteTradeInspINIFile();
|
||
// if gAutoWinForm='1' then
|
||
// Panel1Click(Panel1);
|
||
|
||
application.ProcessMessages;
|
||
|
||
Timer2.Enabled := True;
|
||
end;
|
||
|
||
procedure TFormMain.ToolButton12Click(Sender: TObject);
|
||
var
|
||
CanQuit: Boolean;
|
||
begin
|
||
sendmessage(newh, 1034, 4, 0);
|
||
if application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?', '<27><>ʾ', mb_yesno + mb_IconQuestion) <> IDYES then
|
||
Exit;
|
||
ADOConnection1.Close;
|
||
Close;
|
||
end;
|
||
|
||
procedure TFormMain.Panel1Click(Sender: TObject);
|
||
type
|
||
TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
|
||
var
|
||
Tf: TMyFunc;
|
||
Tp: TFarProc;
|
||
Th: Thandle;
|
||
DllName, DllInt: string;
|
||
IniFile: TIniFile;
|
||
begin
|
||
|
||
ADOConnection1.Connected := False;
|
||
ADOConnection1.Connected := True;
|
||
|
||
try
|
||
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'FileKPZ.INI');
|
||
DllName := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'DLL<4C>ļ<EFBFBD>1', 'DjdMachineInsp.dll');
|
||
DllInt := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'DLL<4C><4C><EFBFBD>ú<EFBFBD>1', '3');
|
||
finally
|
||
IniFile.Free;
|
||
end;
|
||
Th := LoadLibrary(PChar(DllName));
|
||
if Th > 0 then
|
||
begin
|
||
try
|
||
Tp := GetProcAddress(Th, 'GetDllForm');
|
||
if Tp <> nil then
|
||
begin
|
||
Tf := TMyFunc(Tp);
|
||
newh := Tf(Application, 0, strToint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(''), PChar(Tpanel(Sender).Caption), PChar(''), PChar(''), '', '', '', '', '', '', '', '', PChar(ConDateBaseString));
|
||
end
|
||
else
|
||
begin
|
||
ShowMessage('<27><>ӡִ<D3A1>д<EFBFBD><D0B4><EFBFBD>');
|
||
end;
|
||
finally
|
||
// FreeLibrary();
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>' + Trim('dllname'));
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TFormMain.Panel2Click(Sender: TObject);
|
||
var
|
||
CanQuit: Boolean;
|
||
begin
|
||
sendmessage(newh, 1034, 4, 0);
|
||
if application.MessageBox('<27><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰϵͳ<CFB5><CDB3>?', '<27><>ʾ', mb_yesno + mb_IconQuestion) <> IDYES then
|
||
Exit;
|
||
ADOConnection1.Close;
|
||
Close;
|
||
end;
|
||
|
||
procedure TFormMain.Panel3Click(Sender: TObject);
|
||
type
|
||
TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
|
||
var
|
||
Tf: TMyFunc;
|
||
Tp: TFarProc;
|
||
Th: Thandle;
|
||
DllName, DllInt: string;
|
||
IniFile: TIniFile;
|
||
begin
|
||
|
||
ADOConnection1.Connected := False;
|
||
ADOConnection1.Connected := True;
|
||
|
||
try
|
||
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'FileKPZ.INI');
|
||
gDllName1 := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'DLL<4C>ļ<EFBFBD>2', 'DjdMachineInsp.dll');
|
||
DllInt := IniFile.ReadString('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'DLL<4C><4C><EFBFBD>ú<EFBFBD>2', '1');
|
||
finally
|
||
IniFile.Free;
|
||
end;
|
||
Th := LoadLibrary(PChar(gDllName1));
|
||
if Th > 0 then
|
||
begin
|
||
try
|
||
Tp := GetProcAddress(Th, 'GetDllForm');
|
||
if Tp <> nil then
|
||
begin
|
||
Tf := TMyFunc(Tp);
|
||
newh := Tf(Application, 0, strToint(DllInt), 0, 0, PChar(User_Id), PChar(User_Name), PChar(''), PChar(TToolButton(Sender).Caption), PChar(''), PChar(''), '', '', '', '', '', '', '', '', PChar(ConDateBaseString));
|
||
end
|
||
else
|
||
begin
|
||
ShowMessage('<27><>ӡִ<D3A1>д<EFBFBD><D0B4><EFBFBD>');
|
||
end;
|
||
finally
|
||
// FreeLibrary();
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
ShowMessage('<27>Ҳ<EFBFBD><D2B2><EFBFBD>' + Trim('dllname'));
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TFormMain.Panel4Click(Sender: TObject);
|
||
begin
|
||
frmStaffSelList := TfrmStaffSelList.create(self);
|
||
with frmStaffSelList do
|
||
begin
|
||
if showModal = 1 then
|
||
begin
|
||
gMachOperators := fSelUsersName;
|
||
WriteTradeInspINIFile();
|
||
|
||
StatusBar1.Panels[3].Text := '<27><>̨<EFBFBD><CCA8>Ա:' + fSelUsersName;
|
||
end;
|
||
free;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TFormMain.Timer_linkTimer(Sender: TObject);
|
||
begin
|
||
TMyThread.Create(False);
|
||
end;
|
||
|
||
procedure TFormMain.FormDestroy(Sender: TObject);
|
||
begin
|
||
CriticalSection.Free;
|
||
end;
|
||
|
||
////////////////////////////////////////////////
|
||
procedure TFormMain.threadLoadDll(mFileName: string);
|
||
var
|
||
thread: Tthread;
|
||
begin
|
||
if not fileexists(ExtractFilePath(Application.ExeName) + mFileName) then
|
||
exit;
|
||
|
||
thread := TThread.CreateAnonymousThread(
|
||
procedure
|
||
begin
|
||
TThread.Synchronize(nil,
|
||
procedure
|
||
begin
|
||
InitDllEvt(mFileName, 99999, '', 0, '<27><><EFBFBD>洰<EFBFBD><E6B4B0>', '', '', '', '', '', '', '', '', '', '');
|
||
end)
|
||
end);
|
||
|
||
thread.FreeOnTerminate := true;
|
||
thread.Start;
|
||
|
||
end;
|
||
|
||
////////////////////////////////////////////
|
||
procedure TFormMain.InitDllEvt(FromFile: string; FormID: Integer; Para: string; FormType: Integer; Title: string; Def1: string; Def2: string; Def3: string; Def4: string; Def5: string; Def6: string; Def7: string; Def8: string; Def9: string; Def10: string);
|
||
type
|
||
TMyFunc = function(App: Tapplication; FormH: hwnd; FormID: integer; Language: integer; WinStyle: integer; GCode: Pchar; GName: Pchar; DataBase: Pchar; Title: PChar; Parameters1: PChar; Parameters2: PChar; Parameters3: PChar; Parameters4: PChar; Parameters5: PChar; Parameters6: PChar; Parameters7: PChar; Parameters8: PChar; Parameters9: PChar; Parameters10: PChar; DataBaseStr: PChar): hwnd; stdcall;
|
||
var
|
||
Th: HMODULE;
|
||
Tp: TFarProc;
|
||
Tf: TMyFunc;
|
||
begin
|
||
Th := LoadLibrary(PChar(FromFile));
|
||
if Th > 0 then
|
||
begin
|
||
Tp := GetProcAddress(Th, PAnsichar(AnsiString('GetDllForm')));
|
||
if Tp <> nil then
|
||
begin
|
||
Tf := TMyFunc(Tp);
|
||
Tf(Application, 0, FormID, 0, FormType, PChar(User_Id), PChar(User_name), PChar(Para), PChar(Title), PChar(Def1), PChar(Def2), PChar(Def3), PChar(Def4), PChar(Def5), PChar(Def6), PChar(Def7), PChar(Def8), PChar(Def9), PChar(Def10), pchar(ConDateBaseString));
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
Application.MessageBox(PChar('<27><EFBFBD><F2B2BBBF>ļ<EFBFBD>' + FromFile + '<27><>'), '<27><><EFBFBD><EFBFBD>', MB_ICONERROR);
|
||
end;
|
||
end;
|
||
|
||
end.
|
||
|