用TerminateProcess把一个进程结束后有个问题,就是如果该程序在托盘有图标的话,这个图标并不会在它被结束时也消失。当然你用鼠标从上面移过可以解决这个问题,但本人在用自己的刷新辅助软件“疯狂刷新”的时候,每5分钟结束一次,一天下来如果不动电脑,就会在托盘区生成NNN个死图标,即使你拚命去点,也要点半天才能全部消除。有没有办法一下子搞定它呢?答案是肯定的,在网上搜了很久……
用Delphi编写几行代码搞定。
添加自定义类型,用作判断系统类型, type TOSVersion = (osUnknown, os95, os98, osME, osNT3, osNT4, os2K, osXP, os2K3);
添加自定义函数过程
function GetOS: TOSVersion; //获得系统类型,用来取得托盘句柄 var OS: TOSVersionInfo; begin ZeroMemory(@OS, SizeO |
- 2009/05/20 | Delphi托盘类
-
类别(语言类学习笔记)
|
评论(0)
|
阅读(816)
|
发表于 17:16
-
Delphi托盘类
托盘区就是在windows的状态栏下方显示时钟、输入法状态的地方,
要把你的程序显示在托盘区: 下面是一个托盘类,只要把下面粘贴到文本文件中,改成TrayIcon.pas,使用时uses TrayIcon就可以了。
先声明一个全局变量: var tray:TTrayNotifyIcon;
然后在窗体的OnCreate事件中: tray:=TTrayNotifyIcon.Create(self);//将窗体创建为托盘 tray.Icon:=application.Icon;//定义托盘的显示图标 tray.IconVisible:=true;//托盘可见 tray.PopupMenu:=popmenu;//给托盘定义一个右击时的弹出菜单 tray.OnDblClick:=trayDblClick;//给托盘定义一个双击事件(当然要自己写了,不过多数情况只有一行,就是Form1.show);
unit TrayIcon;
interface
uses Windows, SysUtils, Messages, ShellAPI, Classe |
- 2009/05/20 | 托盘 定时器中改图
-
类别(语言类学习笔记)
|
评论(0)
|
阅读(409)
|
发表于 17:00
-
托盘实现,你只要在定时器中改图,就可以实现让它动了,就象qq一样。 下面是托盘技术 一、 实现步骤 1. 创建一个应用程序,在主窗体上增加一个TpopupMenu组件。并为该弹出菜单组件增加菜单项Exit,标题为“退出”。 2. 在Uses中添加ShellAPI,因为在系统状态栏中增加图标时需调用ShellAPI函数Shell_NotifyIconA。该函数需要2个参数,其中一个是TnotifyIconDataA结构,需在主窗体中增加TnotifyIconDataA类型全局变量ntida。 3. 定义消息mousemsg,并编写主窗体的mousemessage消息处理函数,此函数说明在图标上用鼠标左键单击时,会打开应用程序窗口;用鼠标右键单击时,会弹出一个菜单。 下面给出步骤2和3的实现代码: unit Unit1; interface
- 2009/05/20 | 如何在托盘图标实现象window开始菜单中菜单左侧的图片效果
-
类别(语言类学习笔记)
|
评论(0)
|
阅读(458)
|
发表于 16:52
-
今日看到一个帖子问:如何在托盘图标实现象window开始菜单中菜单左侧的图片效果。于是自己动手做了一个。 我的思路是不用菜单,用窗体来实现(我想不仅是delphi其他编程语言应该一样可以)。 例子中我用到了一个第三方控件:Trayicon用来显示动态托盘图标(下载地址:http://2ccc.com/article.asp?articleid=1985)。请看我如下步骤: 1.新建立一个project,同时建立两个窗体Form1和iconform。其中第二个用来显示托盘图标菜单。 2.各放置一个Trayicon、imagelist和Applicationevents控件于Form1上。 3.加入合适的图标到imagelist,然后在trayicon的属性编辑器中的icon项关联imagelist。(如果你加入了多个图标,你可以把trayicon的animate设置为true,可以看见动态图标,trayicon控件包里有DEMO) 4.将trayicon的popupmenuon属性设置为imnone;visible设置为true。 5.在trayicon的mouseup事件中写: var APoint: TPoint; begin GetCursorPos(APoint); if (Screen.ActiveForm <> nil) and (Screen.ActiveForm.Handle <> 0) then
- 2009/04/20 | 关于在浏览器中文件上载的方法与实现
-
类别(数据库学习笔记)
|
评论(0)
|
阅读(28)
|
发表于 22:42
-
关于在浏览器中文件上载的方法与实现
honghoo.net 关键字: ASP |
|
一、问题引入
在现在的管理信息系统中,比较先进的都已采用浏览器/服务器的模型,在这种模型中都要涉及到客户端与服务器端的信息交互问题,从服务器端到客户端的信息传递技术已经比较成熟,这里主要讨论从客户端到服务器端的文件上载问题,基于Microsoft的IE4.0、IIS4.0、ASP(Active Server Page)和标准HTML语言。
二、解决方法
在ASP页面中,利用HTML中的Form元素来实现。 在Form元素的语法中,EncType表明提交数据的格式,Method表明提交的方法(Get/Post)。在IE4.0 及以后的版本中都支持"multipart/form-data"这种格式,相应的Method方法必须是Post,表明要上载文件到服务器。当然同时在服务器相应的WEB站点上 | |
- 2009/04/20 | 顶层表单的菜单工具栏
-
类别(数据库学习笔记)
|
评论(0)
|
阅读(107)
|
发表于 00:04
-
lujin=left(sys(16),rat('\',sys(16))-1) SET defa to (lujin) TopForm=CREATEOBJECT('TopForm') TopForm.show on shutdown TopForm.destroy _screen.windowstate=1 read events set default to on shutdown _screen.windowstate=2 retu
DEFINE CLASS TopForm AS form showwindow=2 DoCreate = .T. Caption = "TopForm_Menu_Toolbar" width=500 height=300 TopToolBar='Toolbar1' nActivate=0
proc QueryUnload NODEFAULT clear events
*建菜单 PROCEDURE Init this.oMenu(this
- 2009/04/19 | myDll之myFll,增强你的VFP[New]
-
类别(数据库学习笔记)
|
评论(1)
|
阅读(1634)
|
发表于 23:59
-
函数库说明:myFll是增强VFP的扩展函数库,部分与RMH的myDll中功能相同(名称可能不同)的函数,是由RMH提供的myDll源码改进而来。一些和Win32API名称相同的函数,是在FLL中对Win32API的封装,在VFP中可以直接调用,并可以省略掉一些默认的参数。一些与算法相关的函数,都取自网上开源的代码,帮助中均有注明。
线程函数:部分函数以大写X结尾的函数,均是多线程函数,一般提供多线程的函数都会提供一个单线程的版本。由于线程间通信比较麻烦,均以消息传递的方式通信,因此线程函数需要VFP9以上版本支持(消息绑定)。
版权问题:myFll可以自由使用,任意改名及加壳(发布的这个版本里没有加壳,不过你可以使用upx、aspack之类的加壳),以及自由转发,转发时应注意与帮助文件同时转发。myFll作者不承担可能由于技术原因给你带来的错误或损失。发现错误可以与作者取得联系共同改进。
包含进EXE编译:理论上,FLL文件是可以直接包含进VFP编译的exe文件,此版本的FLL也没有做任何限制。但是,部分函数未经过全面测试,涉及多线程、系统勾子的函数,
使用帮助:myFll发布附带有中文CHM格式帮助,使用示例及参数说明,请查阅帮助。开发环境中可以按如下方式取得部分帮助信息:
取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.)
- 2009/04/19 | 获得汉字的拼音简码
-
类别(数据库学习笔记)
|
评论(0)
|
阅读(121)
|
发表于 23:56
-
获得汉字的拼音简码 本文来源于【梅子论坛临时文章系统】 网站地址:http://www.meizvfp.com/article.asp?id=2
*过程名为pyjm *调用格式为 JM=pyjm(参数) *假若是想求表单中文本框TEXT1中的汉字拼音简码,调用方式为JM=pyjm(THISFORM.TEXT1.VALUE) *变量JM就是所求的拼音简码 PROCEDURE pyjm PARAMETERS strg le=LEN(strg) jm="" for m=1 to le step 2 mystr=substr(strg,m,2) If Asc(mystr) > 0 If Asc(Left(mystr,2)) < Asc("啊") py = Left(mystr,2) EndIf If Asc(Left(mystr, 2)) >= Asc("啊") And Asc(Left(mystr, 1)) < Asc("芭") py = "A" EndIf If Asc(Left(mystr, 2)) >= Asc("芭") And Asc(Left(mystr, 1)) < Asc("擦") py = "B" EndIf If Asc(
- 2009/04/19 | SQL Server连接VFP数据库的实现
-
类别(网页类学习笔记)
|
评论(0)
|
阅读(29)
|
发表于 23:55
-
SQL Server连接VFP数据库的实现 本文来源于【梅子论坛临时文章系统】 网站地址:http://www.meizvfp.com/article.asp?id=1 同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL SERVER里面叫做LINKED SERVER,通过ODBC实现与其它数据库的互联。
本文的测试环境为:
操作系统: WINDOWS2000 SERVER (繁体系统)
安装数据库: SQLSERVER2000(英文版)和VFP6.0
具体实现步骤:
1. 要求pc机上安装VFP6.0和sqlserver2000软件。
2. 配置windows的ODBC数据源:
开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择MICROSOFT FOXPRO VFP DRIVER(*.DBF)—》在ODBC VISUAL FOXPRO SETUP画面中, 自定义数据源名称(随意如:VFPTEST)—》DATABASE TYPE可以选择VISUAL FOXPRO DATABSE(*.DBC)或者FREE TABLE DIRECTORY(*.DBF如选择这种可以自由的选择目录)—》OK完成。
配置和测试ODBC完成!
3. 配置sqlserver2000中的连接服务器:
企业管理器—》
|