c语言 控制台程序 拖动文件到窗口 怎么获取文件路径
我的程序想实现拖动一个文件到窗口,把显示出来的字符串当作文件。比如拖动e盘下的a.txt得到的字符串是““E:\a.txt””但是C语言认识的貌似应该是“E:\\a.tx...
我的程序想实现 拖动一个文件到窗口,把显示出来的字符串当作文件。比如 拖动e盘下的a.txt 得到的字符串是““ E:\a.txt”” 但是C语言认识的貌似应该是“E:\\a.txt” 求转化方法。
展开
2011-04-20
展开全部
你再到程序里点MSN,则已经启动的MSN窗口会显示出来,这个是怎么做到的。
--------------------------------------------------------------------------------
答: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=false;Application->Terminate();return;}elseCreateMutex(NULL,false,Application->Title.c_str());......}
另外,团IDC网上有许多产品团购,便宜有口碑
--------------------------------------------------------------------------------
答: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=false;Application->Terminate();return;}elseCreateMutex(NULL,false,Application->Title.c_str());......}
另外,团IDC网上有许多产品团购,便宜有口碑
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询