大家帮帮忙,为什么不能执行?(100分)

  • 主题发起人 主题发起人 hmghj1215
  • 开始时间 开始时间
H

hmghj1215

Unregistered / Unconfirmed
GUEST, unregistred user!
function TFrmSJBF.CloseSql: boolean;
var
mess: array[0..200] of char;
text: string;
wnd: hwnd;
pid: Cardinal;
po, po1: Pointer;
begin
//StatusBar1.Panels[0].Text := '正在关闭 SQL 进程:';
//StatusBar1.Repaint;
text := getsqlpath + '/binn/sqlmangr.exe';
strpcopy(mess, text);
wnd := FindWindow('SQLManagerApplicationClass', 'SQL Server 服务管理器');
if wnd = 0 then
begin
ShellExecute(0, 'Open', mess, nil, nil, SW_SHOW);
sleep(5000);
end;
BeginThread(nil, 1000, Proc, nil, THREAD_PRIORITY_NORMAL, pid);
sleep(600);
wnd := FindWindow('#32770', 'SQL Server 服务管理器');
if wnd <> 0 then
begin
SendMessage(wnd, WM_COMMAND, IDYES, 0);
end;
//StatusBar1.Panels[0].Text := 'SQL 进程成功关闭。:';
//StatusBar1.Repaint;
sleep(10000);
end;


BeginThread(nil, 1000, Proc, nil, THREAD_PRIORITY_NORMAL, pid);就这句提示错误
需要引用那个单元还是怎么处理?请各位多指教!!!
 
BeginThread(nil, 1000, @Proc, nil, THREAD_PRIORITY_NORMAL, pid);
 
BeginThread 在 System 单元里,所以不需要引用任何单元。
楼主贴一下Proc的定义部分,我估计定义的地方有误,该函数需要定义为公共函数。
 
BeginThread(nil, 1000, @Proc, nil, THREAD_PRIORITY_NORMAL, pid);这样不行,提示
proc没有声明
 
没有定义proc,怎么定义?请多指教
 
//实在感觉到......楼主要更加努力!
unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private

{ Private declarations }
public

{ Public declarations }
end;

var
Form1: TForm1;

function proc(Parameter: Pointer): Integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
pid: Cardinal;
begin
//......
BeginThread(nil, 1000, @proc, Pointer(self), THREAD_PRIORITY_NORMAL, pid);
//......
end;

function proc(Parameter: Pointer): Integer;
begin
//......
end;

end.
 
请大家不要见笑,我一直在努力。
请liyinwei说明白一点
function proc(Parameter: Pointer): Integer;
begin
//......具体代码怎么写?
end;
 
BeginThread 函数的作用就是创建一个线程,
proc 里面就是你创建的这个线程要执行的任务的代码,你想要实现什么功能,就写相应的代码。
 
我想停止SQL SERVER并进行数据还原操作,具体代码应该怎么写呢?还望能多多指教!!!
 
你好像是从我回答的问题中复制来的吧。
那句话中的proc出错。它是自定义的
function Proc(pp: Pointer): integer;

implementation

uses FormPATH;

{$R *.dfm}
function Proc(pp: Pointer): integer;
var wnd: Hwnd;
begin
wnd := FindWindow('SQLManagerApplicationClass', 'SQL Server 服务管理器');
if wnd <> 0 then
begin
SendMessage(wnd, WM_COMMAND, 1015, 0);
end;
Result := 0;
end;
 
请问LFCZ,我要恢复SQL Server数据库在Delphi里的具体代码该怎么写呢?
 
楼主的问题越拉越远。
SQL Server 服务管理器 仅仅是 SQL Server 的管理工具,不是直接关闭 SQL Server 的工具,你关了它,也是没有作用的。
如果不是 NT 系统
WinExec('scm -action 6', SW_HIDE);
如果是 NT 系统
WinExec('net stop mssqlserver', SW_HIDE);
 
接受答案了.
 
后退
顶部