我正在准备一个Delphi模块,它在一个线程中设置一个钩子来记录一个宏:
FHandleRec  := SetWindowsHookEx(WH_JOURNALRECORD, FRecordProc, HInstance, 0);
FHandlePlay := SetWindowsHookEx(WH_JOURNALPLAYBACK, FPlayProc, HInstance, 0);
这在WinXP上工作正常,但在Vista/Windows 7上失败了ERROR_ACCESS_DENIED.我在谷歌(这个)中找到了(那个).报价单:
较低权限进程不能:...使用Journal钩子来监视更高权限的进程.
尝试没有成功:
代码示例:
if LogonUser(PWideChar(sAdminUser), PWideChar(sDomain), PWideChar(sPwd),
             LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken) then 
begin  
  if not ImpersonateLoggedOnUser(hToken) then
    raise Exception.Create('Error impersonating the user');
end;
FHandleRec := SetWindowsHookEx(WH_JOURNALRECORD, FRecordProc, HInstance, 0);
LogonUser并ImpersonateLoggedOnUser执行没有错误.
尝试的其他可能性:
您能否在Visa/Windows 7下显示设置挂钩的代码或建议工作解决方案?
正在使用Delphi 7和Sql Server express 2008 R2开发应用程序,使用BDE通过ODBC连接Sql Server,并使用SQL Native Client作为驱动程序.
在某些特定形式的表组件加薪EDBEngineError"记录已被其他用户更改",我只是尝试添加数据,发生同样的问题时table.cancel,table.post,table.edit.....
几天前我将驱动程序从SQL Server更改为Sql Native Client因为sql server有"连接有另一个hstmt的结果集"的问题,所以我把它改为SQL Native客户端,形成这个我遇到了'记录已经由antoher用户'错误更改.
请任何一个帮助