hahaha
驱动牛犊
驱动牛犊
  • 注册日期2001-08-14
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1761回复:7

再vxd中如何调用win32的api createprocess?

楼主#
更多 发布于:2001-08-17 14:28
再vxd中如何调用win32的api createprocess?

最新喜欢:

flyfoxflyfox
oneq
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2001-11-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-23 20:41
唉,帮忙帮到底吧。把我的类也给您吧。
class myapp : public VAppyTimeEvent
{
public:
        myapp(pcmd  cmd);
        virtual VOID handler(PVOID ref, DWORD flags);
};
.............
myapp::myapp(pcmd cmd):VAppyTimeEvent((PVOID)cmd,CAAFL_TIMEOUT,0) { }
VOID myapp::handler(PVOID ref, DWORD flags)
{
.....//上面贴出的内容

}
.................
    cmd refData;
    refData.lpszFile="Myprogram.exe";
    refData.lpszDir="d:\mydir";
    refData.lpszParams="para.txt";

   (new myapp((pcmd)&refData))->schedule();

以前的程序是更复杂的引用,会影响您的思路。这些是现在临时写的,不知有没问题,您推敲一下吧。祝您顺利。


lfshen
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-23 08:44
oneq你好!
谢谢你的代码,帮了我很大的忙。我还有一个问题,那就是
p=(pcmd)ref;
中的ref如何赋值呢?
谢谢!
oneq
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2001-11-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-22 18:09
这是我的一个程序中的代码片段
typedef struct tagcmd{
char lpszDir[48];          /* address of string for default directory      */
char lpszParams[18];       /* address of string for executable-file parameters     */
char lpszFile[48];         /* address of string for filename       */
}cmd,*pcmd;


pcmd p;
DWORD dd;
struct{
WORD  fsShowCmd;
DWORD lpszDir;          /* address of string for default Directory      */
DWORD lpszParams; /* address of string for executable-file parameters */
DWORD lpszFile;        /* address of string for filename */
DWORD lpszOp;        /* address of string for operation to perform */
DWORD   hwnd;              /* handle of parent window      */
}exec;
PVOID la;

p=(pcmd)ref;
exec.lpszOp=LocalAlloc(LMEM_STRING,0,la,"OPEN");
exec.lpszFile=LocalAlloc(LMEM_STRING,0,la,p->lpszFile);
exec.lpszParams=LocalAlloc(LMEM_STRING,0,la,p->lpszParams);
exec.lpszDir=LocalAlloc(LMEM_STRING,0,la,p->lpszDir);
exec.fsShowCmd=1;
exec.hwnd=NULL;
CallDLL("SHELL","SHELLEXECUTE",sizeof(exec),&exec);
LocalFree(exec.lpszOp);
LocalFree(exec.lpszFile);
LocalFree(exec.lpszParams);
LocalFree(exec.lpszDir);
应该对你有所帮助。
lfshen
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-22 14:42
可是,我用ShellExecute以后,出现链接错误LNK2001(1120)错误!
如何才能正确使用呢?
oneq
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2001-11-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-21 11:47
在VxD中能调用16位的API,恐怕不能调用32位的api,另求它法吧.如果仅是执行程序,可调用Shellexecute.
lfshen
驱动牛犊
驱动牛犊
  • 注册日期2001-08-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-08-21 09:30
[QUOTE]原本由 wentao 发表
[B]可以通过调用上层的Windows核心动态连接库来实现。 [/B][/QUOTE]

具体的写法呢?可否再指点一二?!
谢谢!
wentao
驱动牛犊
驱动牛犊
  • 注册日期2001-05-25
  • 最后登录2003-12-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-08-20 19:12
可以通过调用上层的Windows核心动态连接库来实现。
wentao
游客

返回顶部