#pragma data_seg("Shared")
char ThisPath_bak[255];//记录上次调用dll中函数的进程的路径,试图用这个作为公 共 变量
#pragma data_seg()char ThisPath[255]; //记录当前调用dll中函数的进程的路径static LRESULT WINAPI Sttoy_SttProc (
int nCode,
WPARAM wParam,
LPARAM lParam)
{
GetModuleFileName(0,ThisPath,sizeof(ThisPath));
if (lstrcmp(ThisPath,ThisPath_bak)!=NULL)
{
strcpy(ThisPath_bak,ThisPath);
//因为是不同的进程(路径)执行了该函数,则做一些操作
}
}
以上代码很简单,就是试图用ThisPath_bak记录上次执行Sttoy_SttProc 的进程的路径,用于判断当前执行Sttoy_SttProc的进程的路径是否还是上一个.执行结果如下:第一次用A进程调用Sttoy_SttProc,ThisPath_bak为空 ThisPath为当前路径,如果还是该进程调用Sttoy_SttProc,则ThisPath_bak,ThisPath都等于该进程的路径.
可是问题就在,当另一个B进程调用Sttoy_SttProc时,ThisPath_bak还是为空,ThisPath为B进程的路径.
而如果现在再用A进程调用Sttoy_SttProc,则ThisPath_bak为A进程的路径.我总觉得每个进程都有属于自己的ThisPath_bak,大虾们帮帮我啊!!急
char ThisPath_bak[255];//记录上次调用dll中函数的进程的路径,试图用这个作为公 共 变量
#pragma data_seg()char ThisPath[255]; //记录当前调用dll中函数的进程的路径static LRESULT WINAPI Sttoy_SttProc (
int nCode,
WPARAM wParam,
LPARAM lParam)
{
GetModuleFileName(0,ThisPath,sizeof(ThisPath));
if (lstrcmp(ThisPath,ThisPath_bak)!=NULL)
{
strcpy(ThisPath_bak,ThisPath);
//因为是不同的进程(路径)执行了该函数,则做一些操作
}
}
以上代码很简单,就是试图用ThisPath_bak记录上次执行Sttoy_SttProc 的进程的路径,用于判断当前执行Sttoy_SttProc的进程的路径是否还是上一个.执行结果如下:第一次用A进程调用Sttoy_SttProc,ThisPath_bak为空 ThisPath为当前路径,如果还是该进程调用Sttoy_SttProc,则ThisPath_bak,ThisPath都等于该进程的路径.
可是问题就在,当另一个B进程调用Sttoy_SttProc时,ThisPath_bak还是为空,ThisPath为B进程的路径.
而如果现在再用A进程调用Sttoy_SttProc,则ThisPath_bak为A进程的路径.我总觉得每个进程都有属于自己的ThisPath_bak,大虾们帮帮我啊!!急
怎么样在dll中得知目前调用dll中自定义函数的进程和上次调用此函数的进程不是同一个进程?
在。def中加上:
SECTIONS
.Shared READ WRITE SHARED
试试。