Delphi 如何使此脚本与两个或多个变量一起工作?

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

问题是,我想在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,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;