MFC 如何获取某一个路径下的 .exe 文件是否正在运行

MFC 如何获取某一个路径下的 .exe 文件是否正在运行,第1张

//

/ 判断进程里是否存在 “xxx软件”    例如(xxxexe)           

    返回值为0:软件没运行;

    否则:软件已经运行

                /

//

int CBatteryDlg:: GetProcessCount(const TCHAR szExeName)

    TCHAR sztarget[MAX_PATH]; 

    lstrcpy(sztarget, szExeName); 

    CharLowerBuff(sztarget, MAX_PATH); 

    int count = 0; 

    PROCESSENTRY32 my; 

    HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

    if (((int)l) != -1)  

    {  

        mydwSize = sizeof(my);   

    if (Process32First(l, &my))    

    {     

        do      

        {       

            CharLowerBuff(myszExeFile, MAX_PATH);       

            if (lstrcmp(sztarget, myszExeFile) == 0)        

            {   count++;        }      

        }

        while (Process32Next(l, &my));   

    }  

    CloseHandle(l); 

    } 

    return count;

}

CFileDialog::GetFolderPath ,这个是顺着CFileDialog思路的。

GetCurrentDirectory,可以获取当前的路径。如果你打开txt用的只是文件名称,没有路径的话,那使用的路径就是GetCurrentDirectory获取的路径。

如果是字符串资源,那么使用APP->LoadString(IDS_XXXX);就可以了,如果资源不是二进制的,那么推荐这样使用。

如果是二进制资源(比如音频文件),那么注意不能使用字符串变量接收,因为有可能遇到\0造成无法读取。方法很多,直接百度“VC 二进制资源”即可,代码很多,就不复制了。

这个满足你的要求

s返回文件路径

#define

DLG_FILTER

"ALL

Files

()|||"

#define

DLG_EXT

"

"

CFileDialog

dlg(TRUE,

_T(DLG_EXT),

NULL,

OFN_HIDEREADONLY

|

OFN_OVERWRITEPROMPT

|

OFN_ALLOWMULTISELECT,

_T(DLG_FILTER));

if

(dlgDoModal()

==

IDOK)

{

POSITION

pos

=

dlgGetStartPosition();

while

(pos

!=

0)

{

CString

s

=

dlgGetNextPathName(pos);

}

}

下面代码,可以选择文件夹,会返回文件夹的路径

需要自己查找每个文件

char

GetPath(HWND

hWnd,char

pBuffer)

{

BROWSEINFO

bf;

LPITEMIDLIST

lpitem;

memset(&bf,0,sizeof

BROWSEINFO);

bfhwndOwner=hWnd;

bflpszTitle=

"选择路径";

bfulFlags=BIF_RETURNONLYFSDIRS;

//属性你可自己选择

lpitem=SHBrowseForFolder(&bf);

if(lpitem==NULL)

//如果没有选择路径则返回

0

return

0;

//如果选择了路径则复制路径,返回路径长度

SHGetPathFromIDList(lpitem,pBuffer);

return

pBuffer;

}

为TRUE时是打开对话框,为FALSE时是保存对话框

CFileDialog dlg(TRUE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "文本文件 (txt)|txt||");

if(dlgDoModal() == IDOK)

{

//获得文件名

CString szFileName = dlgGetPathName();

//下面添加对文件的 *** 作代码

}

GetFileName 只获取文件名。

如果要得到包含全路径的文件名要用 GetPathName

另外你想把文件名传出来(供别的函数用),file_name 应当放在 h 文件里,可以在初始化时开单元。

我的一个程序取文件名用下面方法,通过实参传递:

void CStripDoc::Get_Dac_Filename(CString name)

{

CString str;

char BASED_CODE filters[] = "DAC file (dac)|dac||";

CWnd parentWnd;

parentWnd=parentWnd->GetActiveWindow();

CFileDialog openDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,filters,parentWnd);

if(openDlgDoModal()==IDOK)

{

name = openDlgGetPathName();

}

}

先分配一块内存,内存大小是文件长度+1,然后初始化内存为0,把文件内容读进内存块,最后把内存块指针直接赋值给一个CString变量,然后调用编辑框的SetWindowText函数显示即可

从后往前查找最后一个路径分隔符的索引 ,然后截取字符串

CString str = _T("C:\\WINDOWS\\SYSTEM32\\123EXE");

int nPos = strReverseFind (_T('\\'));

str = strLeft(nPos+1);

以上就是关于MFC 如何获取某一个路径下的 .exe 文件是否正在运行全部的内容,包括:MFC 如何获取某一个路径下的 .exe 文件是否正在运行、MFC下怎样获取一个txt文件的当前路径、怎么读取MFC工程中的资源文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9762547.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存