做了一个ocx控件,在ie中调用,同时只允许一个ocx控件在运行
目前试了几种实现方法,1、在ocx中新建个窗口类,然后在初始化的时候判断窗口类是否存在,FindWindows(classname,NULL)。如果有窗口存在,则退出。
2、在控件初始化的时候,createfile一个独占的文件,然后写数据,如果打不开或者无法写入数据
则判断有控件存在,退出。
现在的问题是在ie8、ie6下都正常,这2个ie都是一个页面为一个进程的方式,但是在ie7下则不行
2中方法都没法判断控件存在,是否有其他好的方法啊。急,谢谢
目前试了几种实现方法,1、在ocx中新建个窗口类,然后在初始化的时候判断窗口类是否存在,FindWindows(classname,NULL)。如果有窗口存在,则退出。
2、在控件初始化的时候,createfile一个独占的文件,然后写数据,如果打不开或者无法写入数据
则判断有控件存在,退出。
现在的问题是在ie8、ie6下都正常,这2个ie都是一个页面为一个进程的方式,但是在ie7下则不行
2中方法都没法判断控件存在,是否有其他好的方法啊。急,谢谢
方法2对于IE7为什么不行?
方法2对于IE7为什么不行?
我是怀疑,因为ie7,一个ie窗口就是一个进程,新开一个选项卡的话,是进程里起了个线程,这种情况下就判断不到了,如果开2个ie7的窗口是没问题的,具体原因也不懂啊,,
估计是独占方式是进程共享,2个tab在一个进程
你直接通过文件存在来判断,第一个打开时创建一个文件,第二个打开时判断文件在不在
估计是独占方式是进程共享,2个tab在一个进程
你直接通过文件存在来判断,第一个打开时创建一个文件,第二个打开时判断文件在不在这样会有个隐患,如果程序异常崩溃了,没去做删除文件的操作,第二次永远都打不开了,除非手动删除文件,之前有考虑过这种,用写配置文件也一样
估计是独占方式是进程共享,2个tab在一个进程
你直接通过文件存在来判断,第一个打开时创建一个文件,第二个打开时判断文件在不在这样会有个隐患,如果程序异常崩溃了,没去做删除文件的操作,第二次永远都打不开了,除非手动删除文件,之前有考虑过这种,用写配置文件也一样
创建lock文件,OpenFile()并加锁。如果进程异常崩溃,文件还在,但OpenFile()句柄会被OS关闭,锁会被释放。
估计是独占方式是进程共享,2个tab在一个进程
你直接通过文件存在来判断,第一个打开时创建一个文件,第二个打开时判断文件在不在这样会有个隐患,如果程序异常崩溃了,没去做删除文件的操作,第二次永远都打不开了,除非手动删除文件,之前有考虑过这种,用写配置文件也一样
创建lock文件,OpenFile()并加锁。如果进程异常崩溃,文件还在,但OpenFile()句柄会被OS关闭,锁会被释放。
试过也不行,好奇葩
,第二个线程不会进入InitInstance(),加到ctl的oncreate后可以正常判断了。谢谢了