创建具有托盘的服务程序 本文关键词:托盘,创建,程序,服务
创建具有托盘的服务程序 本文简介:创建具有托盘的服务程序Windows2000/XP和2003等支持一种叫做“服务程序“的东西.程序作为服务启动有以下几个好处:(1)不用登陆进系统即可运行.(2)具有SYSTEM特权.所以你在进程管理器里面是无法结束它的.笔者在2003年为一公司开发机顶盒项目的时候,曾经写过课件上传和媒体服务,下面
创建具有托盘的服务程序 本文内容:
创建具有托盘的服务程序
Windows
2000/XP和2003等支持一种叫做“服务程序“的东西.程序作为服务启动有以下几个好处:
(1)不用登陆进系统即可运行.
(2)具有SYSTEM特权.所以你在进程管理器里面是无法结束它的.
笔者在2003年为一公司开发机顶盒项目的时候,曾经写过课件上传和媒体服务,下面就介绍一下如何用Delphi7创建一个Service程序.
运行Delphi7,选择菜单File-->New-->Other--->Service
Application.将生成一个服务程序的框架.将工程保存为ServiceDemo.dpr和Unit_Main.pas,然后回到主框架.我们注意到,Service有几个属性.其中以下几个是我们比较常用的:
(1)DisplayName:服务的显示名称
(2)Name:服务名称.
我们在这里将DisplayName的值改为“Delphi服务演示程序“,Name改为“DelphiService“.编译这个项目,将得到ServiceDemo.exe.这已经是一个服务程序了!进入CMD模式,切换致工程所在目录,运行命令“ServiceDemo.exe
/install“,将提示服务安装成功!然后“net
start
DelphiService“将启动这个服务.进入控制面版-->管理工具-->服务,将显示这个服务和当前状态.不过这个服务现在什么也干不了,因为我们还没有写代码:)先“net
stop
DelphiService“停止再“ServiceDemo.exe
/uninstall“删除这个服务.回到Delphi7的IDE.
我们的计划是为这个服务添加一个主窗口,运行后任务栏显示程序的图标,双击图标将显示主窗口,上面有一个按钮,点击该按钮将实现Ctrl+Alt+Del功能.
实际上,服务程序莫认是工作于Winlogon桌面的,可以打开控制面板,查看我们刚才那个服务的属性-->登陆,其中“允许服务与桌面交互“是不打钩的.怎么办?呵呵,回到IDE,注意那个布尔属性:Interactive,当这个属性为True的时候,该服务程序就可以与桌面交互了.
File-->New-->Form为服务添加窗口FrmMain,单元保存为Unit_FrmMain,并且把这个窗口设置为手工创建.完成后的代码如下:
unit
Unit_Main;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,SvcMgr,Dialogs,Unit_FrmMain;
type
TDelphiService
=
class(TService)
procedure
ServiceContinue(Sender:
TService;
var
Continued:
Boolean);
procedure
ServiceExecute(Sender:
TService);
procedure
ServicePause(Sender:
TService;
var
Paused:
Boolean);
procedure
ServiceShutdown(Sender:
TService);
procedure
ServiceStart(Sender:
TService;
var
Started:
Boolean);
procedure
ServiceStop(Sender:
TService;
var
Stopped:
Boolean);
private
{
Private
declarations
}
public
function
GetServiceController:
TServiceController;
override;
{
Public
declarations
}
end;
var
DelphiService:
TDelphiService;
FrmMain:
TFrmMain;
implementation
{$R.DFM}
procedure
ServiceController(CtrlCode:
DWord);
stdcall;
begin
DelphiService.Controller(CtrlCode);
end;
function
TDelphiService.GetServiceController:
TServiceController;
begin
Result
:=
ServiceController;
end;
procedure
TDelphiService.ServiceContinue(Sender:
TService;
var
Continued:
Boolean);
begin
while
not
Terminated
do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;
procedure
TDelphiService.ServiceExecute(Sender:
TService);
begin
while
not
Terminated
do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;
procedure
TDelphiService.ServicePause(Sender:
TService;
var
Paused:
Boolean);
begin
Paused
:=
True;
end;
procedure
TDelphiService.ServiceShutdown(Sender:
TService);
begin
gbCanClose
:=
true;
FrmMain.Free;
Status
:=
csStopped;
ReportStatus();
end;
procedure
TDelphiService.ServiceStart(Sender:
TService;
var
Started:
Boolean);
begin
Started
:=
True;
Svcmgr.Application.CreateForm(TFrmMain,FrmMain);
gbCanClose
:=
False;
FrmMain.Hide;
end;
procedure
TDelphiService.ServiceStop(Sender:
TService;
var
Stopped:
Boolean);
begin
Stopped
:=
True;
gbCanClose
:=
True;
FrmMain.Free;
end;
end.
主窗口单元如下:
unit
Unit_FrmMain;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,ShellApi,Graphics,Controls,Forms,Dialogs,ExtCtrls,StdCtrls;
const
WM_TrayIcon
=
WM_USER
+
1234;
type
TFrmMain
=
class(TForm)
Timer1:
TTimer;
Button1:
TButton;
procedure
FormCreate(Sender:
TObject);
procedure
FormCloseQuery(Sender:
TObject;
var
CanClose:
Boolean);
procedure
FormDestroy(Sender:
TObject);
procedure
Timer1Timer(Sender:
TObject);
procedure
Button1Click(Sender:
TObject);
private
{
Private
declarations
}
IconData:
TNotifyIconData;
procedure
AddIconToTray;
procedure
DelIconFromTray;
procedure
TrayIconMessage(var
Msg:
TMessage);
message
WM_TrayIcon;
procedure
SysButtonMsg(var
Msg:
TMessage);
message
WM_SYSCOMMAND;
public
{
Public
declarations
}
end;
var
FrmMain:
TFrmMain;
gbCanClose:
Boolean;
implementation
{$R.dfm}
procedure
TFrmMain.FormCreate(Sender:
TObject);
begin
FormStyle
:=
fsStayOnTop;
{窗口最前}
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
{不在任务栏显示}
gbCanClose
:=
False;
Timer1.Interval
:=
1000;
Timer1.Enabled
:=
True;
end;
procedure
TFrmMain.FormCloseQuery(Sender:
TObject;
var
CanClose:
Boolean);
begin
CanClose
:=
gbCanClose;
if
not
CanClose
then
begin
Hide;
end;
end;
procedure
TFrmMain.FormDestroy(Sender:
TObject);
begin
Timer1.Enabled
:=
False;
DelIconFromTray;
end;
procedure
TFrmMain.AddIconToTray;
begin
ZeroMemory(@IconData,SizeOf(TNotifyIconData));
IconData.cbSize
:=
SizeOf(TNotifyIconData);
IconData.Wnd
:=
Handle;
IconData.uID
:=
1;
IconData.uFlags
:=
NIF_MESSAGE
or
NIF_ICON
or
NIF_TIP;
IconData.uCallbackMessage
:=
WM_TrayIcon;
IconData.hIcon
:=
Application.Icon.Handle;
IconData.szTip
:=
Delphi服务演示程序
;
Shell_NotifyIcon(NIM_ADD,@IconData);
end;
procedure
TFrmMain.DelIconFromTray;
begin
Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
procedure
TFrmMain.SysButtonMsg(var
Msg:
TMessage);
begin
if
(Msg.wParam
=
SC_CLOSE)
or
(Msg.wParam
=
SC_MINIMIZE)
then
Hide
else
inherited;
//
执行默认动作
end;
procedure
TFrmMain.TrayIconMessage(var
Msg:
TMessage);
begin
if
(Msg.LParam
=
WM_LBUTTONDBLCLK)
then
Show();
end;
procedure
TFrmMain.Timer1Timer(Sender:
TObject);
begin
AddIconToTray;
end;
procedure
SendHokKey;stdcall;
var
HDesk_WL:
HDESK;
begin
HDesk_WL
:=
OpenDesktop
(
Winlogon,0,False,DESKTOP_JOURNALPLAYBACK);
if
(HDesk_WL
0)
then
if
(SetThreadDesktop
(HDesk_WL)
=
True)
then
PostMessage(HWND_BROADCAST,WM_HOTKEY,0,MAKELONG
(MOD_ALT
or
MOD_CONTROL,VK_DELETE));
end;
procedure
TFrmMain.Button1Click(Sender:
TObject);
var
dwThreadID
:
DWORD;
begin
CreateThread(nil,0,@SendHokKey,nil,0,dwThreadID);
end;
end.
program
ServiceDemo;
uses
SvcMgr,Unit_Main
in
Unit_Main.pas
{DelphiService:
TService},Unit_frmMain
in
Unit_frmMain.pas
{frmMain};
{$R.RES}
begin
Application.Initialize;
Application.CreateForm(TDelphiService,DelphiService);
Application.Run;
end.
窗体代码如下:
object
DelphiService:
TDelphiService
OldCreateOrder
=
False
DisplayName
=
Delphi服务演示程序
Interactive
=
True
OnContinue
=
ServiceContinue
OnExecute
=
ServiceExecute
OnPause
=
ServicePause
OnShutdown
=
ServiceShutdown
OnStart
=
ServiceStart
OnStop
=
ServiceStop
Left
=
261
Top
=
177
Height
=
150
Width
=
215
end
object
frmMain:
TfrmMain
Left
=
192
Top
=
107
Width
=
696
Height
=
480
Caption
=
我的服务测试程序
Color
=
clBtnFace
Font.Charset
=
DEFAULT_CHARSET
Font.Color
=
clWindowText
Font.Height
=
-11
Font.Name
=
MS
Sans
Serif
Font.Style
=
[]
OldCreateOrder
=
False
OnCloseQuery
=
FormCloseQuery
OnCreate
=
FormCreate
OnDestroy
=
FormDestroy
PixelsPerInch
=
96
TextHeight
=
13
object
Button1:
TButton
Left
=
296
Top
=
264
Width
=
75
Height
=
25
Caption
=
Button1
TabOrder
=
0
OnClick
=
Button1Click
end
object
Timer1:
TTimer
OnTimer
=
Timer1Timer
Left
=
120
Top
=
192
end
end
篇2:托盘货架的主体结构和作用
托盘货架的主体结构和作用 本文关键词:托盘,货架,主体,作用,结构
托盘货架的主体结构和作用 本文简介:天津金利得货架制造有限公司www.jsfw8.com托盘货架的主体结构和作用货架在工厂、仓库、物流中心等都很常见,结构形式多种多样,托盘货架是我们常用的货架类型。今天,天津金利得货架制造有限公司将解答托盘货架的主体结构和作用,仅供参考!天津金利得货架产品被广泛应用于仓储物流、商场超市、玩具礼品、食品
托盘货架的主体结构和作用 本文内容:
天津金利得货架制造有限公司
www.jsfw8.com
托盘货架的主体结构和作用
货架在工厂、仓库、物流中心等都很常见,结构形式多种多样,托盘货架是我们常用的货架类型。今天,天津金利得货架制造有限公司将解答托盘货架的主体结构和作用,仅供参考!
天津金利得货架产品被广泛应用于仓储物流、商场超市、玩具礼品、食品饮料、工业机械、五金电器、店面展示、出口商品交易会、家居生活用品等各个方面。天津金利得货架制造有限公司不断完善管理制度,超越自我,想客户之所想,为客户提供整体布局设计,货架摆放等方面的建议。提供完善的货物配送,货架安装等服务。
托盘货架的主体结构和作用
托盘货架是使用最广泛的托盘类货物存储系统,通用性也较强。其结构是货架沿仓库的宽度方向分成若干排,其间有一条巷道,供堆垛起重机、叉车或其他搬运机械运行,每排货架沿仓库纵长方向分为若干列,在垂直方向又分成若干层,从而形成大量货格,用以用托盘存储货物。
托盘货架的优点是
1.每一块托盘均能单独存人或移动,而不需移动其他托盘。
2.可适应各种类型的货物,可按货物尺寸要求调整横梁高度。
3.配套设备最简单,成本也最低,能快速安装及拆除。
4.货物装卸迅速,主要适用于整托盘出人库或手工拣选的场合。
5.能尽可能地利用仓库的上层空间。
(详情点击进入官网)
听了小编的讲解,是不是觉得对托盘货架的主体结构和作用已经有了一定的了解呢。然而在真正选购货架的时候肯定还有各式各样疑惑和困难。选择天津金利得,让您无忧购买货架,放心选择,安心售后,帮助客户去挑选适合的货架。让“货真架实”不再是说说而已。
天津金利得货架制造有限公司不断完善管理制度,超越自我,想客户之所想,为客户提供整体布局设计,货架摆放等方面的建议。提供完善的货物配送,货架安装等服务。
目前主要销售的产品有:精品货架,仓储货架(包括轻量型仓储货架、中量型仓储货架、重量型仓储货架、万用角钢货架等),超市货架及其超市配套设备,图书音像货架等辅助设备。
想了解更多托盘货架的主体结构和作用,请点击进入金利得官网咨询!
重型横梁货架
阁楼货架
层板货架
钢平台
悬臂条货架
流利条货架
篇3:托盘 塑料托盘 金属托盘
托盘 塑料托盘 金属托盘 本文关键词:托盘,金属,塑料托盘
托盘 塑料托盘 金属托盘 本文简介:各种不同托盘各有什么优势呢?托盘通常用于物流行业中集装、堆放、搬运和运输货物。现如今,托盘现已广泛应用于生产、运输、仓储和流通等领域,被认为是20世纪物流产业中两大关键性创新之一。托盘给现代物流业带来的效益主要体现在:可以实现物品包装的单元化、规范化和标准化,保护物品,方便物流和商流,托盘又名栈板,
托盘 塑料托盘 金属托盘 本文内容:
各种不同托盘各有什么优势呢?
托盘通常用于物流行业中集装、堆放、搬运和运输货物。现如今,托盘现已广泛应用于生产、运输、仓储和流通等领域,被认为是20世纪物流产业中两大关键性创新之一。托盘给现代物流业带来的效益主要体现在:可以实现物品包装的单元化、规范化和标准化,保护物品,方便物流和商流,托盘又名栈板,夹板。
我们经常使用的托盘优以下几种,塑料托盘、木托盘、钢托盘和金属托盘。下面就为大家介绍下这几种托盘,宁比较他们之间个有什么优点?
塑料托盘
山东中运塑料托盘是可安装工件及其随行夹具,并且能在各工位、工作台之间互相交换的装置。用于集装、堆放搬运托盘的车、搬运和运输的放置作为单元负荷的货物。
托盘给现代物流业带来的效益主要体现在:可以实现物品包装的单元化、规范化和标准化,保护物品,方便物流和商流。
塑料托盘具有以下特点:
1.四面可插,操作方便;
2.既适合在仓库中互相堆垛,又适合在各类货架上使用;
3.适合各类卡车运输,方便物料的集装化、单元化运输;
4.方便叉车、液压托盘车等搬运工具作业;
5.配合防滑橡胶,保证物料在搬运和运输过程中不会滑落;
6.使用寿命长,且可循坏再用;
7.塑料托盘使用安全、卫生、防虫防蛀,无需修理。
塑料托盘与其他托盘相比有以下优势:
在耐腐蚀性方面,塑料托盘最好,塑木次之,钢托盘最差;
在耐潮湿性方面,塑料托盘性能优异;
在平均寿命方面,钢托盘和塑料托盘难分伯仲;
在使用性能上,塑料和钢托盘均优於纸、木托盘;
塑料托盘规格:
主要是1100mm×1100mm和1200mm×1000mm约占塑料托盘的50%左右.并且有网格的和川字形的。
免熏蒸模压木托盘
免熏蒸模压木托盘概述:
免熏蒸模压木托盘不长虫,不发霉,成本低,实用可靠,免去出口熏蒸消毒,节省费用支出,无须签证,可直接出口(输美,英,加,澳及欧盟等国)及可从境外直接输入中国它可以凭“无木材包装”声明接办理出口手续。免熏蒸模压木托盘属于免检产品环保型优质模压托盘,经过极大高温高压由模具重压制成,是环保模压托盘是所有托盘中承托力最强的托盘,免熏蒸模压木托盘符合世界各国的入境和环保要求。
免熏蒸模压木托盘主要规格:
1200mm×1000mm;1100mm×1100mm;1200mm×800mm;静载3-4吨,动载1-2吨。
钢托盘
钢托盘简介:
山东中运钢托盘(钢制托盘)是传统木托盘、塑料托盘的理想换代产品,适合叉车作业,存取货物方便。
主要用于多用途的地面存储、货架存储及货物联运、周转等超轻金属托盘系列。集装、堆放、搬运和运输的放置作为单元负荷的水平平台装置。是现在工业重要的仓储与运输辅助设备之一。
主要材料为钢材或镀锌钢板,经专用设备成型,各种型材互相支撑,铆钉连接加强,再经CO2气体保护焊焊接而成。
钢托盘的优点:
承载能力在托盘中是最强的。
2、100%环保,可以回收再利用,资源不浪费。
3、表面作防滑处理,周边作包边处理。底盘坚固,整体质量轻而钢性强。具备稳定的包装性能;
4、防水,防潮及防锈;与木托盘相比有环保优势(如木托盘容量滋生虫害)。
5、与塑料托盘相比有强度、耐磨、耐温及价格优势。
6、特别是用于出口时,不需要熏蒸、高温消毒或者防腐处理,符合国际环保法规;
7、灵活(四方向的插入设计,无形中提高空间利用和操作的方便性,而且其坚固的底版设计亦符合输送滚输和自动包装系统使用)等。
400---零八六-----叁零伍陆
金属托盘
金属托盘技术参数
型号
长度(mm)
宽度(mm)
叉车道间距
高度(mm)
载重性能
动载(T)
静载(T)
SC-II-1318
1800
1300
550-850
80
2.0-2.3
6.0-7.0
金属托盘优点
1、承载能力在托盘中是最强的。
2、100%环保,可以回收再利用,资源不浪费。
3、表面作防滑处理,周边作包边处理。底盘坚固,整体质量轻而钢性强。具备稳定的包装性能;
4、防水,防潮及防锈;与木托盘相比有环保优势(如木托盘容量滋生虫害)。
5、与塑料托盘相比有强度、耐磨、耐温及价格优势。
6、特别是用于出口时,不需要熏蒸、高温消毒或者防腐处理,符合国际环保法规;
7、灵活(四方向的插入设计,无形中提高空间利用和操作的方便性,而且其坚固的底版设计亦符合输送滚输和自动包装系统使用)等。