只运行一个程序

重复运行程序会造成系统资源的浪费(这句话真别扭),很多情况 下我们把程序最小化或者隐藏起来,想用这个程序的时候会习惯的doulbeclick程序的图标,wo~又一个程序运行了,我们本意是既然已经是打开的程序,你把程序再给我显现出来不就可以了?弱智的程序员阿(不是说你,也不是说我,假想。。)

常见的方法有三种,一、原子方法;二、互斥量、三、查找窗口(Findwindow or EnumWindow)
这是其中一种,晚上把这几种方法都尝试一边,其实很简单

(最近在学习asm,使用的masm32和radasm写win32程序也很方便,和win32 sdk差不多)


szClassName         db'网关切换器[iHqq]',0
 ;only single instance is running
 ;szClassName is dialog name of instance
    invoke FindWindow,NULL,addr szClassName;查找符合条件的窗口
      .if eax != NULL  ;如果找到窗口
          invoke ShowWindow,eax,SW_SHOW  ;显示出来
          invoke SetForegroundWindow,eax         ;放到最前面来;
          invoke ExitProcess,0                              ;结束本实例
      .endif


    ;如果运行到这,说明没有找到符合条件的窗口,也就是程序是第一次运行


事实上这样并不能将窗口出现在最前面,以下抄袭别人

[SetForegroundWindow会调用FlashWindowEx来闪烁目标窗口,代表已经切换了
窗口,但事实上往往我们需要在某个时候将我们的窗口弹出到最前台来!曾听说过有高
手使用修改窗口切换的糸统规则来达到此目的,这样做未必太麻烦了,必定不是每个人
都是高手呢!下面给大家介绍一个"偏方",非常简单,只是利用了一个MSDN未公开的函数罢了.
这个未公开的函数是:SwitchToThisWindow
它的c格式的原形是:
void WINAPI SwitchToThisWindow (
                  HWND hWnd,   // Handle to the window that should be activated
                  BOOL bRestore // FAULS表示最小化显示;
                  );

由于没有原型和库,我们在使用时通常用动态联接法]


szClassName         db'网关切换器[iHqq]',0
szFuName            db'SwitchToThisWindow',0
szUser32            db'user32.dll',0

 ;only single instance is running
 ;szClassName is dialog name of instance
    invoke FindWindow,NULL,addr szClassName
      .if eax != NULL
          mov  oldhWnd,eax
          invoke ShowWindow,eax,SW_SHOW
          invoke GetModuleHandle,addr szUser32    ;得到地址空间内user32.dll的模块句柄,因为user32已经载入,所以使用GetModuleHandle,而不是loadlibrary,我们可以不考虑释放问题;
          invoke GetProcAddress,eax,addr szFuName ;得到SwitchToThisWindow的地址;
          push TRUE
          push oldhWnd
       call eax
       invoke ExitProcess,0
      .endif

转载于:https://www.cnblogs.com/iHqq/archive/2007/02/27/658305.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uva 11012——Cosmic Cabbages

题意:给定n个点,然后求这n个点的两两间最大曼哈顿距离。 思路:暴力枚举。直接枚举肯定不行,d|x1-x2||y1-y2||z1-z2|,我们只要把绝对值拆开,变成d(x1,y1,z1)(x2,y2,z2)逗号表示-号,然…

c#活动目录操作

添加引用 System.DirectoryServices导入命名空间 using System.DirectoryServices;srvip "192.168.1.1"; dn "DCl,DCcom";user "administrator"; pwd "123"; DirectoryEntry de;denewDirectoryEntry("LDAP://"srvip &quo…

CodeForces 572A,B,C

CodeForces 572A 题意:给定两个序列,问能否从第一个序列取出k个数,从第二个序列取出m个数,使得第一个序列取出来的所有数都小于第二个序列取出来的数。 思路:水。因为问的是存在,所以只要在第一个序列中取…

[导入]Ajax使用初步

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/19/1534299.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/20/816309.html

CodeForces 570B,C

CodeForces 570B 题意:给定n和m,然后再(1-n)中随机取出c,求一个m使得 的概率最大,概率一样时输出最小的m。 思路:只需要看1到m-1和m1和n的最大的那一边就可以了,坑是n1的情况和n为…

ASP.NET2.0学习8--WebPart部件

WebPart学习 内容: 功能简介 webpart的五个模式 自定义webpart部件 一、Webpart功能简介 1. 自定义页面内容 2. 自定义页面布局 3. 导入、导出webpart 4. 在不同部件间建立通信 5. 管理和个性化的设置 二、…

uva 10771——Barbarian tribes

题意:n个G族人和m个K族人做成一圈,编号1-n为G,编号n1-m为K组人,没走k步杀死一个人,当杀死两个人的时候判断杀的两人相同组则在第二个位置补K组人,否则G,问最后留下的是什么组的人。 思路&#x…

验证码(转)

把下面代码存为一个文件code.aspx。另一个文件里调用<img src"code.aspx">using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebCo…

uva 10716——Evil Straw Warts Live

题意&#xff1a;给定一个字符串&#xff0c;然后判断最小经过若干次交换然后使这个串变成一个回文串&#xff08;每次可以交换相邻两位&#xff09;。 思路&#xff1a;贪心。如果一个串的奇数字母的个数为奇数个&#xff0c;那么一定是不可能的。以开头和结尾作为两头不断枚举…

ASP.NET 2.0 中实现模板中的数据绑定系列(2)

双向数据绑定 FormView可以通过相关的数据源控件支持自动地更新、插入和删除操作&#xff08;与DetailsView类似&#xff09;。如果要定义编辑或插入的UI&#xff0c;那么除了定义数据项模板&#xff08;ItemTemplate&#xff09;之外&#xff0c;你还要定义EditItemTemplate或…

uva 10479——The Hendrie Sequence

题意&#xff1a;开始一个数0&#xff0c;然后0变成1&#xff0c;后边的变换规则是如果当前是k就在后边加上k-1个0&#xff0c;然后再加上k-1&#xff0c;该问题求该序列的第n个数是多少。 思路&#xff1a;规律的题目。将串分成1&#xff0c;1&#xff0c;2&#xff0c;4&…

如何实现Asp与Asp.Net共享Session

在.net中&#xff0c;Session的存储机制已经与Asp的存储机制不一样&#xff0c;虽然可以在同一个IIS下同时运行asp与aspx&#xff0c;但是它们之间不能传递Session。 之前大批系统应用到了asp&#xff0c;在升级过程中&#xff0c;如果完全抛弃asp来重写&#xff0c;一来工作量…

BestCoder Round #67 (div.2) 1001——N bulbs

题意&#xff1a;给定一个长度为n的灯泡的状态序列&#xff0c;经过每个灯泡时&#xff0c;都要开关一下&#xff08;开变关&#xff0c;关变开&#xff09;&#xff0c;问能否在回到终点的条件下关掉所有的灯。 思路&#xff1a;没出现一个为1的灯&#xff0c;都需要走奇数步来…

JavaScript 参考教程——写在前面

JavaScript 参考教程 JavaScript 参考教程——写在前面 JavaScript 参考教程——JavaScript简介 JavaScript 参考教程——对象化编程 JavaScript 参考教程——文档对象 JavaScript 参考教程——事件处理 写在前面 本教程的性质 本教程是一个初级教程 本教程为未接触过 JavaScri…

uva 11995——I Can Guess the Data Structure!

题意&#xff1a;给定一个包&#xff0c;然后给定这个包的一些操作以此来判断包的数据结构类型。 思路&#xff1a;直接按照stl来模拟即可。 code&#xff1a; #include <bits/stdc.h> using namespace std;const int N1000 10; int t[N],v[N],n;int check_st(){stack&l…

MyGeneration的NHibernate代码生成模版

MyGeneration 是一款免费的代码生成工具&#xff0c;其强大性和易用性都较为人所称道。之前一直在使用DDLLY命名空间的模版来生成代码&#xff0c;久而久之就想着自己来写个&#xff0c;所幸&#xff0c;一晚上的奋战&#xff0c;终于搞出个像模像样的东东出来。如果还有什么没…

uva 1203—— Argus

题意&#xff1a;给定一个阿格斯系统&#xff0c;每个period周期都会产生一次编号为Q_num的事件&#xff0c;任务是模拟前k个事件。 思路&#xff1a;直接按照优先队列的方法来模拟和构造即可。 code&#xff1a; #include <bits/stdc.h> using namespace std;struct nod…

ASP.NET 2.0 的数据源、数据绑定控件概述与区别

一、Render UI 1 GridView GridView 控件用来在表中显示数据源的值。每列表示一个字段&#xff0c;而每行表示一条记录。GridView 控件支持下面的功能&#xff1a; 绑定至数据源控件&#xff0c;如 SqlDataSource。 内置排序功能。 内置更新和删除功能。 内置分页功能。 内…

uva 11997——K Smallest Sums

题意&#xff1a;给定k个含k个数的数列&#xff0c;然后每次从每个序列中取出一个相加&#xff0c;然后问所有的数中前k小的。 思路&#xff1a;将每个表排序后然后插入优先队列中&#xff0c;依次是a[0]b[0],a[0]b[1],然后不断合并到一张表中&#xff0c;最后打印出来即可。 c…

金蝶Apusic应用服务器的数据源管理(转)

1. 前言 在基于 J2EE 平台的应用开发中&#xff0c;大多数的应用都需要跟数据库打交道&#xff1b;而自从接触 JDBC 起&#xff0c;我们便不止一次的被告之&#xff1a;数据库资源是十分宝贵的系统资源&#xff0c;一定要谨慎使用。但令人遗憾的是&#xff0c;在笔者…