Delphi 如何使此脚本与两个或多个变量一起工作?
问题是,我想在if条件下,除了“NOTEPAD”之外,再加上“CHROME”或其他变量。可能吗 我已经尝试过使用这种语法Delphi 如何使此脚本与两个或多个变量一起工作?,delphi,delphi-7,pascal,Delphi,Delphi 7,Pascal,问题是,我想在if条件下,除了“NOTEPAD”之外,再加上“CHROME”或其他变量。可能吗 我已经尝试过使用这种语法 function EnumerateWindows(hWnd: HWND; lparam:LPARAM):Bool; var ClassName, TheText : Array [0..255] of char; sName : string; begin Application.ProcessMessages; GetClassNAme(hWnd,Clas
function EnumerateWindows(hWnd: HWND; lparam:LPARAM):Bool;
var
ClassName, TheText : Array [0..255] of char;
sName : string;
begin
Application.ProcessMessages;
GetClassNAme(hWnd,Classname, 255);
if GetWindowText(hWnd, TheText, 255) > 0 then
begin
sName := StrPas(TheText);
if pos('NOTEPAD',UpperCase(sName)) > 0 then
postMessage(FindWindow(ClassName, TheText), WM_CLOSE, 0, 0);
end;
end;
但这不是工作
多谢各位
新案例
所以我在尝试将TEdit值连接到if条件时遇到了问题。
这是我的完整代码,它可以工作,并且已经编译好了,但是在软件运行时被迫关闭,并显示了类似这样的错误
Project project1.exe引发异常类eaaccesviolation,消息为“地址0000000处的访问冲突”读取地址0000000“进程已停止使用top或run继续
我的代码
if pos('NOTEPAD' + 'CHROME',UpperCase(sName)) > 0 then
if pos('NOTEPAD' or 'CHROME',UpperCase(sName)) > 0 then
如果p和Q是两个布尔表达式,那么p或Q是它们的析取。换句话说,
如果(Pos('NOTEPAD',UpperCase(sName))>0)或(Pos('CHROME',UpperCase(sName))>0)那么。
但是在你了解Pascal的绝对基础知识之前,你真的,真的不应该做高级的事情(比如使用Win32 API)
by:如果
p
和Q
是两个布尔表达式,那么p或Q
是它们的析取。换句话说,如果(Pos('NOTEPAD',大写(sName))>0)或(Pos('CHROME',大写(sName))>0),那么
。但是你真的,真的不应该在你了解Pascal的基础知识之前就做一些高级的事情(比如使用Win32 API)!你好,谢谢你的回复。我不太明白,因为我是新来的。但是谢谢你,我正在尝试理解它。你应该考虑买一本关于Delphi的Fig编程入门书,调用<代码> FunWistWOW()/<代码>是多余的,因为你已经有了你正在搜索的HWND,所以只需使用HWND AS。代码>postMessage(FindWindow(类名,TheText),…)代码>=>postMessage(hWnd,…)代码>好的。谢谢你的建议,我正在考虑买它。
public
{ Public declarations }
function EnumerateWindows(hWnd: HWND; lparam:LPARAM):Bool; stdCall;
end;
function TForm1.EnumerateWindows(hWnd: HWND; lparam:LPARAM):Bool;
var
ClassName, TheText : Array [0..255] of char;
sName : string;
begin
Application.ProcessMessages;
GetClassNAme(hWnd,Classname, 255);
if GetWindowText(hWnd, TheText, 255) > 0 then
begin
sName := StrPas(TheText);
if pos(Edt1.Text,UpperCase(sName)) > 0 then
postMessage(FindWindow(ClassName, TheText), WM_CLOSE, 0, 0);
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
EnumWindows(@TForm1.EnumerateWindows,0);
end;