怎么得到启动进程的文件的文件名

如何得到启动进程的文件的文件名?
例如:要启动word程序,既可以运行word.exe,也可以直接运行word文档,如果是直接运行word文档,请教如何在程序中得到启动word程序的word文档名?
用GetModuleFileName函数只能得到word.exe,而不能得到word文档名,郁闷

------解决方案--------------------
CWinApp::m_lpCmdLine,参数
------解决方案--------------------
使用getcommandline来解析"word文档名"
------解决方案--------------------
很久前写的个函数
char * Getprocmd(DWORD dwPid,char *lpszCmdLine) //调用前请确定权限
{
HMODULE hm;
DWORD addr,size;
HANDLE phd;
unsigned char buf[1024];
strcpy(lpszCmdLine,"(None)");
hm=GetModuleHandleA("kernel32.dll");
addr=(DWORD)GetProcAddress(hm,"GetCommandLineA");
phd = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, dwPid);
if(phd == NULL) {return 0;}
::ReadProcessMemory(phd,(LPVOID)addr,buf,5,&size);
if(size !=5) { ::CloseHandle(phd); return 0;}
if(buf[0] != 0xA1 ){strcpy(lpszCmdLine,"Windows ver differ!"); ::CloseHandle(phd); return lpszCmdLine;} //0xa1 : Mov EAX,
addr= *(DWORD *)(&buf[1]);
::ReadProcessMemory(phd,(LPVOID)addr,buf,4,&size);
if(size !=4) {::CloseHandle(phd); return 0;}
addr= *(DWORD *)(&buf[0]);
::ReadProcessMemory(phd,(LPVOID)addr,buf,1024,&size);
if(size == 0) {::CloseHandle(phd); return 0;}
::CloseHandle(phd);
strcpy(lpszCmdLine,(char *)buf);
// Msgs(str);
return lpszCmdLine;
}