请把PASCAL翻译成C++。代码在帖子里

CPerlAsm_Lx 2003-11-10 07:21:05
var
Form1 : TForm;
HookID : THandle;
DisableRButton : boolean;

implementation

function MouseProc(nCode: integer; wParam,
lParam: longint): longint; stdcall;
function GetClassNameEnh(Handle: Hwnd): string;
var
ClassName: PChar;
Buffer: integer;
begin
Buffer := 40;
getmem(ClassName, Buffer);
windows.GetClassName(Handle, ClassName, Buffer);
Result := ClassName;
Freemem(ClassName);
end;

var
P: TPoint;
begin
if (nCode < 0) then
Result := CallNextHookEx(HookID, nCode, wParam, lParam)
else if DisableRButton and ((wParam = WM_RBUTTONDOWN) or (wParam =
WM_RBUTTONUP)) then
begin
GetCursorPos(P);
if Pos('Internet Explorer_', GetClassNameEnh(WindowFromPoint(P))) <> 0
then
Result := HC_SKIP
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end
else
Result := CallNextHookEx(HookID, nCode, wParam, lParam);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
DisableRButton := True;
HookID := SetWindowsHookEx(WH_MOUSE, MouseProc, 0,
GetCurrentThreadId());
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookID <> 0 then
UnHookWindowsHookEx(HookID);
end;


...全文
79 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
短歌如风 2003-11-13
  • 打赏
  • 举报
回复
CPerlAsm_Lx:
MouseProc是全局函数呀!你是不是写成成员函数了?
返回值改为int。因为我看原来定义是longint,所以就写了long。C++的指针类型检查比Object Pascal严格,如果不行就reinterpret_cast
CPerlAsm_Lx 2003-11-13
  • 打赏
  • 举报
回复
[C++ Error] Unit1.cpp(24): E2034 Cannot convert 'long (__stdcall * (_closure )(int,long,long))(int,long,long)' to 'int (__stdcall *)()'
[C++ Error] Unit1.cpp(24): E2342 Type mismatch in parameter 'lpfn' (wanted 'int (__stdcall *)()', got 'void')
[C++ Error] Unit1.cpp(28): E2141 Declaration syntax error
CPerlAsm_Lx 2003-11-13
  • 打赏
  • 举报
回复
楼上的2位。

[C++ Error] Unit1.cpp(24): E2451 Undefined symbol 'MouseProc'
[C++ Error] Unit1.cpp(28): E2141 Declaration syntax error

//根本就没定义钩子勾的函数。怎么不调试呢。不是浪费大家双被时间?
yjy1001 2003-11-12
  • 打赏
  • 举报
回复
也来献丑
TForm * Form1;
HANDLE HookID;
bool DisableRButton;

AnsiString __fastcall function GetClassNameEnh( HWND Handle )
{
char * ClassName;
int Buffer;
Buffer = 40;
ClassName = new char[Buffer];
GetClassName( Handle, ClassName, Buffer );
AnsiString Result( ClassName );
delete ClassName;
return Result;
}
__stdcall long MouseProc( int nCode, long wParam, long lParam )
{
TPoint P;
if ( nCode < 0 )
return CallNextHookEx( HookID, nCode, wParam, lParam );
else if (DisableRButton && ( ( wParam == WM_RBUTTONDOWN ) || ( wParam == WM_RBUTTONUP ) ))
{
GetCursorPos( & P );
if ( AnsiString( GetClassNameEnh( WindowFromPoint( &P ) ) ).Pos( “Internet Explorer_” ) != 0 )
return HC_SKIP;
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}


void __fastcall TForm1::FormCreate( TObject * Sender )
{
DisableRButton = True;
HookID = SetWindowsHookEx( WH_MOUSE, MouseProc, 0, GetCurrentThreadId() );
}

void __fastcall TForm1::FormDestroy( TObject * Sender );
{
if ( HookID != 0 )
UnHookWindowsHookEx( HookID );
}
修改了 下: plainsong(短歌) 的代码 因为 他没注意到 bcb 的if 要(),和 ‘ 与“的改写,以及漏写了 2个 “ ;” 估计没有调试过……

我写完 也没调试过。

唉 PASCAL 写 没有缩进 的程序 好难看啊??? 是 有点晕

这个程序是个鼠标钩子,在鼠标右键按下和放开的时候 判断 鼠标右击的是否为 IE 程序。
有哥 2003-11-10
  • 打赏
  • 举报
回复
有点晕
短歌如风 2003-11-10
  • 打赏
  • 举报
回复
贴上来才发现有错误。上面的作废,试试下面的。

TForm * Form1;
HANDLE HookID;
bool DisableRButton;

AnsiString __fastcall function GetClassNameEnh( HWND Handle )
{
char * ClassName;
int Buffer;
Buffer = 40;
ClassName = new char[Buffer];
GetClassName( Handle, ClassName, Buffer );
AnsiString Result( ClassName );
delete []ClassName;
return Result;
}

__stdcall long MouseProc( int nCode, long wParam, long lParam )
{
TPoint P;
if ( nCode < 0 )
return CallNextHookEx( HookID, nCode, wParam, lParam )
else if DisableRButton && ( ( wParam == WM_RBUTTONDOWN ) || ( wParam == WM_RBUTTONUP ) )
{
GetCursorPos( & P );
if ( AnsiString( GetClassNameEnh( WindowFromPoint( &P ) ) ).Pos( 'Internet Explorer_' ) != 0 )
return HC_SKIP
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}


void __fastcall TForm1::FormCreate( TObject * Sender )
{
DisableRButton = True;
HookID = SetWindowsHookEx( WH_MOUSE, MouseProc, 0, GetCurrentThreadId() );
}

void __fastcall TForm1::FormDestroy( TObject * Sender );
{
if ( HookID != 0 )
UnHookWindowsHookEx( HookID );
}
短歌如风 2003-11-10
  • 打赏
  • 举报
回复

TForm * Form1;
HANDLE HookID;
bool DisableRButton;

AnsiString __fastcall function GetClassNameEnh( HWND Handle )
{
char * ClassName;
int Buffer;
Buffer = 40;
ClassName = new char[Buffer];
GetClassName( Handle, ClassName, Buffer );
AnsiString Result( ClassName );
delete ClassName;
return Result;
}

__stdcall long MouseProc( in nCode, long wParam, long lParam )
{
POINT P;
if ( nCode < 0 )
return CallNextHookEx( HookID, nCode, wParam, lParam )
else if DisableRButton && ( ( wParam = WM_RBUTTONDOWN ) || ( wParam = WM_RBUTTONUP ) )
{
GetCursorPos( & P );
if ( AnsiString( GetClassNameEnh( WindowFromPoint( P ) ) ).Pos( 'Internet Explorer_' ) != 0 )
return HC_SKIP
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}
else
return CallNextHookEx( HookID, nCode, wParam, lParam );
}


void __fastcall TForm1::FormCreate( TObject * Sender )
{
DisableRButton = True;
HookID = SetWindowsHookEx( WH_MOUSE, MouseProc, 0, GetCurrentThreadId() );
}

void __fastcall TForm1::FormDestroy( TObject * Sender );
{
if ( HookID != 0 )
UnHookWindowsHookEx( HookID );
}
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 【创新7.1声卡KX驱动+连线图】是一款专门为创新公司所制造的7.1音频声卡量身定制的驱动方案,其核心宗旨在于为用户带来超越官方原生驱动程序的卓越音质感受。KX驱动属于一种由爱好者群体自主开发的非官方驱动软件,该驱动在Creative公司原版驱动程序的基础上进行了深度改良与功能扩充,旨在提供更为多样化的声音调节参数以及更为出色的运行表现。 我们现在来详细认识一下7.1声道系统。7.1声道代表的是一种沉浸式音频技术规范,该规范包含七个全频域音箱单元(具体包括前置左声道、前置右声道、中央声道、环绕左声道、环绕右声道、后置左声道以及后置右声道)搭配一个低频震动单元,其设计目的是为用户构建更加立体且逼真的听觉场景,尤其适合应用于电子游戏、电影观影以及音乐欣赏等场景。 KX驱动的独到之处在于其赋予了用户更为广阔的个性化定制权限,使用者能够依据自身的听音偏好对音频参数进行细致调节,例如均衡器参数、混响效果、压缩比设定、噪声抑制门限等,从而使得最终的音效呈现出更为精致且个性化的特质。不仅如此,KX驱动还兼容VST插件机制,该机制是虚拟乐器与音频效果处理软件的通用标准,用户通过安装各式各样的VST插件,能够进一步增强声卡的实用功能,例如模拟多种乐器音色或达成复杂的声音效果制作。 在获取并部署KX驱动程序之后,对"连线图"的正确导入工作具有决定性意义。连线图又被称为音频路由配置图或信号流向示意图,它是一份用于指导用户如何正确配置并连接各个音频输出通道的视觉化手册。对于非专业背景的使用者而言,准确设定这些音频通道可能会面临一定程度的困难,因此连线图的提供极大地简化了这一过程。依照连线图进行配置操...

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧