| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖, 2 人收藏
标题:VFP9+win10环境下如何获取操作系统后台已运行软件名称
只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:67
专家分:10
注 册:2022-3-13
结帖率:38.46%
收藏(2)
 问题点数:0 回复次数:9 
VFP9+win10环境下如何获取操作系统后台已运行软件名称
需要获取操作系统后台已运行软件的列表,从中判断某个软件是否被运行,如果没有被运行则由VFP调用对应程序运行。
搜索更多相关主题的帖子: 软件 操作系统 获取 运行 后台 
2023-03-23 16:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
枚举进程。
2023-03-23 16:49
shschy
Rank: 2
等 级:论坛游民
帖 子:67
专家分:10
注 册:2022-3-13
收藏
得分:0 
一个是禁止重复运行,另一个判断是否已被运行。
2023-03-23 16:50
shschy
Rank: 2
等 级:论坛游民
帖 子:67
专家分:10
注 册:2022-3-13
收藏
得分:0 
以下是引用吹水佬在2023-3-23 16:49:19的发言:

枚举进程。

如果没有被运行,或因为未知原因退出win10操作系统后台,就需要vfp来强制运行。
2023-03-23 16:51
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:647
专家分:2492
注 册:2018-3-13
收藏
得分:0 
速度要求不高的话,用 WMI 就可以取出来

这家伙很懒,啥也没留下
2023-03-23 17:39
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:647
专家分:2492
注 册:2018-3-13
收藏
得分:0 
关键代码就这些,自己再做些修改
程序代码:
Set Nulldisplay To
Create Cursor ttt (name V(50), value V(250))

oWMI = GetObject('winmgmts://')
*!*    cQuery = 'Select * From Win32_Process'
*!*    取这俩属性差不多够用了
cQuery = 'Select Caption,ExecutablePath From Win32_Process'
oRes = oWMI.ExecQuery(cQuery)

Clear
For ii = 0 to oRes.Count - 1
    For each o1 in oRes.ItemIndex(ii).Properties_
        cVal = ''
        If o1.IsArray and !IsNull(o1.Value)
            For each o2 in o1.Value
                cVal = cVal + Transform(o2) + ','
            EndFor
        Else
            cVal = Transform(o1.Value)
        EndIf
        Insert into ttt (name, value) Values (o1.name, cVal)
    EndFor
    Insert into ttt (name) Values ('====================')
EndFor

Locate
Browse nowait

每个进程所有的属性看这里:https://learn.

[此贴子已经被作者于2023-3-23 17:57编辑过]


这家伙很懒,啥也没留下
2023-03-23 17:53
pvm2000
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:179
专家分:312
注 册:2022-12-22
收藏
得分:0 
在Vfp中调用 taskkill ,可获得各进程的详细信息,再用taskkill
杀指定进程。
2023-03-23 18:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10559
专家分:42996
注 册:2014-5-20
收藏
得分:0 
以下是引用shschy在2023-3-23 16:50:14的发言:

一个是禁止重复运行,另一个判断是否已被运行。

一个,另一个,都是同一个过程吧。先另判断是否在运行,再是否禁止重复运行。
具体是什么情况? 处理本进程与外部进程是不同的。
2023-03-23 19:00
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:747
专家分:1114
注 册:2021-10-13
收藏
得分:0 
给你段代码,你看看用不用得上。。。
程序代码:
*-- VFP Code
#Define GW_NEXT 2
#define GW_CHILD 5 
Declare Integer GetActiveWindow In user32
Declare Integer GetWindow In win32api Integer HWnd, Integer wFlag
Declare Integer GetWindowTextA In win32api Integer hwnd, String @ctitle, Integer ntitle
Declare Integer SetForegroundWindow In Win32api Integer
DECLARE inte IsChild IN WIN32API integer Hwndparent,integer Hwnd
Declare inte FindWindowEx IN win32api inte hWnd1,inte hWnd2, string lpsz1, string lpsz2
Declare Integer GetWindowText In win32api Integer hand, String @ctitle, Integer ntitle

clea 
*hcurrent=findwindowex(_vfp.hwnd,0,null,null)
hcurrent=findwindowex(0,0,null,null)
*?hcurrent
*hCurrent=GetActiveWindow()    &&从当前活动窗口开始
*lnhCurrent=hCurrent
*SetForegroundWindow(_vfp.HWnd)
*SetForegroundWindow(_Screen.HWnd)  &&或Thisform.HWnd
*SetForegroundWindow(hCurrent)        && vfp8 以下没有 HWnd
*lcWinLists=""
Create Cursor t1 (WindowHWnd I,WindowTitle C(254))
Do While hCurrent!=0
    lcWinTitle=Space(255)
    lnlength=GetWindowTextA(hCurrent,@lcWinTitle,Len(lcWinTitle))
    lcwintitle=SUBSTR(lcwintitle,1,lnlength)
    *lcWinTitle=Iif(lnlength>0,Strtran(Trim(lcWinTitle),Chr(0),""),"")
    Insert Into t1 Values (hCurrent,lcWinTitle)
    *hCurrent=findwindowex(_vfp.hwnd,hcurrent,null,null)   &&得到下一个窗口句柄
    hCurrent=findwindowex(0,hcurrent,null,null)   &&得到下一个窗口句柄
    *?ischild(_vfp.hWnd,hcurrent)
    *?hcurrent    
Enddo
*SetForegroundWindow(lnhCurrent)
Select t1
*Locate
Browse
*Clear Dlls
2023-03-23 20:03
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1573
专家分:3044
注 册:2012-2-29
收藏
得分:0 
6楼、9楼的大侠,谢谢!
2023-03-24 05:41
快速回复:VFP9+win10环境下如何获取操作系统后台已运行软件名称
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018843 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved