--------------------------------------------------------------------------------
答:Mutex
--------------------------------------------------------------------------------
答:我是说如果有MSN的进程存在,则把现有的窗口显示出来,这个是怎么做的。
--------------------------------------------------------------------------------
答:很多办法,用mutex也可以实现。比如两个mutex就可以解决了,不过需要多一个线程来处理。程序将mutex1锁住,等待mutex2,程序再运行发现mutex1已经锁住,则释放mutex2,原来运行的程序mutex2受信,则调出主窗口,然后继续等待再次受信。
--------------------------------------------------------------------------------
答:查找是否有msn的Mutex,如果有歼做唤,再查找msn的进程,然后,**它,这个也可以吧
--------------------------------------------------------------------------------
答:Semaphore也行
--------------------------------------------------------------------------------
答:FindWindow然后ShowWindow啊
--------------------------------------------------------------------------------
答:toxharry(charry):如何**?人家楼主问是这个。toicr_mio(Logos):这种方法不好,因为可能有重名窗口,除非可以通过HWND或者PID,但我不知道能不能实现。
--------------------------------------------------------------------------------
答:不好意思,打错了:“除非可以通过HWND获得PID”
--------------------------------------------------------------------------------
答:HANDLEhMutex=CreateMutex(NULL,TRUE,str)//str--mutexnameif(hMutex==NULL¦¦GetLastError()==ERROR_ALREADY_EXISTS)
--------------------------------------------------------------------------------
答:楼上正解
--------------------------------------------------------------------------------
答:MSN不是用互斥量的MSN是基于COM的,只要类厂维持一个msn对象就可以了。
--------------------------------------------------------------------------------
答:如果该程序是始终有窗口的,我们可以通过查胡厅找它的窗口的句柄,**它用FindWindow如果它缩小到了Tray上了,我们可定义一个消息,程序收到该消息就显示窗口
--------------------------------------------------------------------------------
答:楼主的意思好像是针对进程只开一个问题,你自己程序写一下不就可以啦,跟具体MSN里面内核没关系。
--------------------------------------------------------------------------------
答:检查进程用FindWindow
--------------------------------------------------------------------------------
答:这是BCB的,懂这意思就可以void__fastcallTYZClient::FormCreate(TObject*Sender)Application->ShowMainForm=falseApplication->Terminate()return}elseCreateMutex(NULL,false,Application->Title.c_str())......}
另外,团IDC网上有许多产品团购,便宜有口碑
如果是通过open方式打开的,那么第一个参数就是文件路径信息:#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, /* mode_t mode */...)
如果是通过fopen方式打开的,那么第一个参数就是文件路径信息:
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode)
无论通过open还是fopen打开文件,都必须先知道文世族晌件路径信息,尽管可能是相对路径。搜锋
如果知道了filename的内容,我们就可以定穗罩位它的绝对路径,也就是你说的完全路径。
1. filename本身就是绝对路径,ok。
2. filename是相对路径,那么先通过getcwd获取进程的执行路径,然后再获取绝对路径即可。
#include <unistd.h>
extern char *getcwd(char *buf, size_t size)
但是,如果进程在打开文件后又执行了chdir、fchdir之类函数的话,估计就不能够再获取文件路径信息了。
#include <unistd.h>
int chdir(const char *path)
int fchdir(int fildes)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)