设为首页 - 加入收藏 即日起开通【站长IN交流群】
独立ip免备案空间仅100元起 美国高防vps 香港vps
打不死的【香港高防服务器】 精准的淘宝流量排名猛涨
兼职优化合作Q:2805144911 253个ip香港服务器1499元
您的当前位置:主页 > 网络教程 > VB教程 > 正文

怎么在PB中获得VB做的软件的一个窗口,并且关闭它?

来源:ZzWww 编辑:ZzWww 时间:2018-12-13

怎么在PB中获得VB做的软件的一个窗口,而且关闭它?我想在PB做的软件中关闭这个窗口,谢谢!
------华软网友回答------
PB调用外部程序及判断其完成的方法 
 
  关头:API函数FindWindowA和IsWindow

  在PB中经常需要运行一些外部的程序或命令,并期待其执行完成后,才接下来运行剩余的代码。咱们能够有两种方法:

  先定义全局外部函数:
  Function long ShellExecuteA (long hwnd, string lpOperation ,String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library "shell32.dll"
  Function long FindWindowA (String lpClassName , String lpWindowName ) Library "user32.dll" 
  Function boolean IsWindow (Long hwnd ) Library "user32.dll" 

  第一种方式用Run() 函数,可在窗口上建立按扭,clicked事件中包括以下Script:
  ulong ll_handle
  int li_loop
  SetPointer(HourGlass!)
  //最小化执行xxx.bat
  run("xxx.bat", Minimized!)
  //循环到窗口打开,根据程序执行打开所需的时间设定li_loop的循环次数,可预留长一些。
  for li_loop= 1 to 10000
    ll_handle = FindWindowA("tty","xxx")
    yield() //函数作用详见“PB技巧”中《Pb中Yield()函数的运用》
    if ll_handle <> 0 then
      exit 
    end if
  next 
  //一直循环到窗口关闭
  Do While isWindow(ll_handle)
    Yield()
  Loop
  //应用执行完成
  messagebox(‘ok’, ‘执行完成!’)
  这类方法的弱点是不能隐藏外部应用程序窗口,只可最小化。

  第二种方式用API函数,能够隐藏应用程序的窗口,然则调用bat批措置惩罚命令时需要先建立一个PIF资料指定执行完成后关闭窗口,否则窗口不会自行关闭。可在窗口上建立按扭,clicked事件中包括以下Script:
  uint lu_return
  ulong ll_handle
  int li_loop
  string ls_Path
  SetPointer(HourGlass!)
  lu_return = ShellExecutea(handle(parent), "open", "xxx.pif", "", ls_path, 0) 
  //最后一个参数改成4,能够显示执行情况
  if lu_return > 32 then
    for li_loop= 1 to 10000
      ll_handle = FindWindowA("tty","xxx")
      yield()
      if ll_handle <> 0 then
        exit 
      end if
    next 
    //一直循环到窗口关闭
    Do While isWindow(lu_handle)
      Yield()
    Loop
    //应用执行完成
    MessageBox("ok", "执行完成!")
  Else
    //error
    messagebox("毛病", "调用外部应用程序不可功,请检查应用程序路径!")
  End if 
 

------华软网友回复------
如果知道vb的窗体的信息的话,运用楼上的api取到handle,关闭就好了
------华软网友回复------
这个VB窗体是我做的,楼上所说的"如果知道vb的窗体的信息的话,运用楼上的api取到handle,关闭就好了"VB窗体信息是指什么信息?取到handle后怎么关闭它?
UInt  val
val = FindWindowA(0, "系统登录")
IF val > 0   THEN
                 //怎么关闭?
END IF
------华软网友回复------
有人吗?
------华软网友回复------
指的是窗口的题目。
你需要查一查windowsAPI的函数说明。详细的记不清了。

------华软网友回复------
能够用DestroyWindow关闭,

function boolean destroywindow( ulong w_handle) library "user32.dll"

通过句柄关闭!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。




TAG标签:pb PB技巧 华软网

网友评论:

文章右边250

站长IN 网络教程 网站模板 网站地图 xml地图 feed地图 百度地图

Copyright © 2005-2020 ZzWww 站长IN 版权所有 Power by DedeCms

Top