
我写的是一些简单的程序,流程图是这么写的,以供你参考
1写出每个按键
2 (按键A)-->单击-->是否符合单击条件-->符合-->记录参数值-->判断条件-->执行不同的功能-->记录参数值-->对其他功能的使能-->返回
这个只是其中一条线,完整的应该是个网。
大的程序我就不知道了,你再看看吧。
typedef BOOL (_stdcall ENUMPROCESSES)( //注意这里要指明调用约定为-stdcall
DWORD pProcessIds, //指向进程ID数组链
DWORD cb, //ID数组的大小,用字节计数
DWORD pBytesReturned); //返回的字节
//在psapidll中的函数EnumProcessModules用来枚举进程模块
typedef BOOL (_stdcall ENUMPROCESSMODULES)(
HANDLE hProcess, //进程句柄
HMODULE lphModule, //指向模块句柄数组链
DWORD cb, //模块句柄数组大小,字节计数
LPDWORD lpcbNeeded); //存储所有模块句柄所需的字节数
//在psapidll中的函数GetModuleFileNameEx获得进程模块名
typedef DWORD (_stdcall GETMODULEFILENAMEEX)(
HANDLE hProcess, //进程句柄
HMODULE hModule, //进程句柄
LPTSTR lpFilename, //存放模块全路径名
DWORD nSize //lpFilename缓冲区大小,字符计算
);
void main()
{
HINSTANCE hPsDll = LoadLibrary("PSAPIDLL");
if(NULL == hPsDll)
{
cout<<"Load PSAPIDLL failed!"<<endl;
return;
} ENUMPROCESSES pEnumProcesses = (ENUMPROCESSES)GetProcAddress(hPsDll, "EnumProcesses");
ENUMPROCESSMODULES pEnumProcessModules = (ENUMPROCESSMODULES)GetProcAddress(hPsDll, "EnumProcessModules");
GETMODULEFILENAMEEX pGetModuleFileNameEx = (GETMODULEFILENAMEEX)GetProcAddress(hPsDll, "GetModuleFileNameExA"); DWORD processid[1000];
DWORD needed; pEnumProcesses(processid, sizeof(processid), &needed);
int processcount=needed/sizeof(DWORD);
for (int i=0;i<processcount;i++)
{
//打开进程
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
false, processid[i]);
if (hProcess)
{
char path[256] = {0};
HMODULE hModule;
pEnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);
pGetModuleFileNameEx(hProcess, hModule, path, sizeof(path));
GetShortPathName(path,path,256);
char temp[10] = {0};
itoa(processid[i],temp,10);
printf("%s --- %s\n",path,temp);
}
//else
// printf("Failed!!!\n");
} if(hPsDll)
{
FreeLibrary(hPsDll);
}
}
如果采用了静态链接并且没有任何dependents,不能用严格的逻辑来判断使用了哪种编程库。
一般来说,判断一个程序是否使用MFC,首先看运行库,只有这个可以严格确定。如果没有,那么只能根据经验来分析猜测,用SPY++看到的只能作为参考(因为不同编程环境对控件类型的支持有差异,但多数标准控件和窗口一致)。这个分析,多数是通过编程风格、界面习惯、输入控制等方面入手,因为一个软件不可能完全避免使用开发环境的标准模式,不过这个,需要较多的编程经验来分析了。
另外一个,可以根据exe文件的属性中的版本信息提供参考,也可以根据其它资源、数据文件提供参考,但这些都不是绝对的。
最后,还可以通过exe的二进制数据分析来判断,这个更麻烦,但可以准确判断出编译器,至于是否使用了某种库,不是一定可以判断。
MFC程序的编译、调试,必须在Windows平台的VS/VC环境下,因此你安装一个windows也是必须的。
在iMac下,除了虚拟机和双系统(或者单win系统),貌似没有别的办法。
以上就是关于MFC开发的程序该如何写程序流程图 对话框的全部的内容,包括:MFC开发的程序该如何写程序流程图 对话框的、MFC检测后台进程是否运行、怎么判断一个EXE程序是否由MFC编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)