| Profil de MoodskyMoodsky's Programing Spa...PhotosBlogListes | Aide |
|
20/02/2006 [推荐]Visual Studio 2005.NET系列全部下载cs_vs_2005_vsts_trial_dvd.iso.torrent
Microsoft Visual Studio 2005 Team Edition(含MSDN).torrent Microsoft.SQL.Server.2005.简体中文开发版.torrent SQL Server 2005 Enterprise Edition - 32-bit - CD1 (Simplified Chinese).torrent SQL Server 2005 Enterprise Edition - 32-bit - CD2 (Simplified Chinese).torrent SQL Server 2005 Enterprise Edition - 64-bit Extended - CD1 (Simplified Chinese).torrent SQL Server 2005 Enterprise Edition - 64-bit Extended - CD2 (Simplified Chinese).torrent Visio2005.for.VS2005.简体中文正式版.torrent Visual Basic 2005 Express Edition ISO(繁体中文).torrent Visual.Studio2005.Msdn简体中文正式版.torrent Visual.Studio2005_Pro简体中文正式版.torrent Visual.Veb.Devloper.2005速成版中文正式版.torrent 下载:
18/02/2006 [OCN]破解组织KeyGen模板;###########################################################
.586 .model flat,stdcall option casemap:none include \masm32\include\windows.inc
include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\comctl32.inc include \masm32\include\shell32.inc include minifmod.inc includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib includelib \masm32\lib\comctl32.lib includelib \masm32\lib\shell32.lib includelib minifmod.lib ;###########################################################
;%%%%%%%%%%%%%%%%%%%% ; 对话框过程定义 ;%%%%%%%%%%%%%%%%%%%% DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD ;%%%%%%%%%%%%%%%%%%%%
; 常数定义 ;%%%%%%%%%%%%%%%%%%%% .const DLG_MAIN equ 102 DLG_ABOUT equ 104 IDI_ICON equ 103 IDM_MUSIC equ 101 IDC_REG equ 1001 IDC_ABOUT equ 1003 IDC_WEB1 equ 1010 IDC_WEB2 equ 1011 IDC_EMAIL equ 1012 IDC_OK equ 1013 IDE_NAME equ 1000 IDE_SN equ 1002 ;%%%%%%%%%%%%%%%%%%%%
; 变量定义 ;%%%%%%%%%%%%%%%%%%%% .data handleIcon dd 0 handleEdit dd 0 szFormat db "%1d",0 szOpen db "open", 0 szSoftAdd db "http://spaces.msn.com/moodsky/",0 ; 在这里定义IDC_WEB2 szOCNadd db "http://www.chinaocn.net",0 ; 在这里定义IDC_WEB2 szEmail db "mailto:moodsky@eyou.com",0 ; 在这里定义IDC_EMAIL szNameBuffer db 50 dup(0) szSnBuffer db 50 dup(0) szBuffer db 100 dup(0) .data?
hInstance HINSTANCE ? CommandLine LPSTR ? pMusic LPVOID ? nMusicSize DWORD ? ;###########################################################
.code
start: ;%%%%%%%%%%%%%%%%%%%% ; 建立对话框 ;%%%%%%%%%%%%%%%%%%%% invoke InitCommonControls ; 初始化自定义控制库 invoke GetModuleHandle,NULL ; 获取当前模块句柄 mov hInstance,eax push esi
invoke FindResource, hInstance, IDM_MUSIC, RT_RCDATA push eax invoke SizeofResource, hInstance, eax mov nMusicSize, eax pop eax invoke LoadResource, hInstance, eax invoke LockResource, eax mov esi, eax mov eax, nMusicSize add eax, SIZEOF nMusicSize invoke GlobalAlloc, GPTR, eax mov pMusic, eax mov ecx, nMusicSize mov dword ptr [eax], ecx add eax, SIZEOF nMusicSize mov edi, eax rep movsb pop esi invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,OFFSET DlgProc,FALSE ; 显示定义的对话框 invoke GlobalFree, pMusic invoke ExitProcess,NULL ;%%%%%%%%%%%%%%%%%%%%
; 关于对话框过程 ;%%%%%%%%%%%%%%%%%%%% AboutProc proc hAWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM .IF uMsg==WM_CLOSE invoke EndDialog,hAWin,NULL ret .ELSEIF uMsg==WM_INITDIALOG ;%%%%%%%%%%%%%%%%%%%% ; 对话框初始化消息 ; 设置标题栏的图标 ;%%%%%%%%%%%%%%%%%%%% invoke SetWindowPos,hAWin,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE .ELSEIF uMsg==WM_COMMAND ;%%%%%%%%%%%%%%%%%%%% ; 按钮消息处理 ;%%%%%%%%%%%%%%%%%%%% mov eax,wParam .IF ax == IDC_WEB1 ;%%%%%%%%%%%%%%%%%%%% ; 软件下载地址按钮 ;%%%%%%%%%%%%%%%%%%%% invoke ShellExecute,NULL,OFFSET szOpen,OFFSET szSoftAdd,NULL,NULL,SW_SHOWNORMAL .ELSEIF ax == IDC_WEB2 ;%%%%%%%%%%%%%%%%%%%% ; 我的论坛地址按钮 ;%%%%%%%%%%%%%%%%%%%% invoke ShellExecute,NULL,OFFSET szOpen,OFFSET szOCNadd,NULL,NULL,SW_SHOWNORMAL .ELSEIF ax == IDC_EMAIL ;%%%%%%%%%%%%%%%%%%%% ; 邮件地址按钮 ;%%%%%%%%%%%%%%%%%%%% invoke ShellExecute,NULL,OFFSET szOpen,OFFSET szEmail,NULL,NULL,SW_SHOWNORMAL .ELSEIF ax == IDC_OK ;%%%%%%%%%%%%%%%%%%%% ; OK按钮 ;%%%%%%%%%%%%%%%%%%%% invoke EndDialog,hAWin,NULL ret .ENDIF .ELSE mov eax,FALSE ret .ENDIF mov eax,TRUE ret AboutProc endp ;%%%%%%%%%%%%%%%%%%%%
; 主对话框过程 ;%%%%%%%%%%%%%%%%%%%% DlgProc proc hWin:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM mov eax,uMsg .IF eax == WM_CLOSE ;%%%%%%%%%%%%%%%%%%%% ; 点击"x"按钮 ;%%%%%%%%%%%%%%%%%%%% invoke mfmPlay, 0 invoke EndDialog,hWin,NULL .ELSEIF eax == WM_INITDIALOG ;%%%%%%%%%%%%%%%%%%%% ; 对话框初始化消息 ; 设置标题栏的图标 ;%%%%%%%%%%%%%%%%%%%% invoke LoadIcon,hInstance,IDI_ICON mov handleIcon, eax invoke SendMessage,hWin,WM_SETICON,1,handleIcon invoke SetWindowPos,hWin,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE or SWP_NOMOVE xor eax,eax invoke mfmPlay, pMusic invoke SetFocus, eax .ELSEIF eax == WM_COMMAND
;%%%%%%%%%%%%%%%%%%%% ; 按钮消息处理 ;%%%%%%%%%%%%%%%%%%%% mov eax,wParam .IF eax == IDC_REG ;%%%%%%%%%%%%%%%%%%%% ; 点击"注册"按钮 ;%%%%%%%%%%%%%%%%%%%% .IF .ELSE .ENDIF .ELSEIF eax == IDC_ABOUT ;%%%%%%%%%%%%%%%%%%%% ; 点击"关于"按钮 ;%%%%%%%%%%%%%%%%%%%% invoke CreateDialogParam,hInstance,DLG_ABOUT,hWin,offset AboutProc,FALSE invoke EnableWindow,hWin,0 .ENDIF .ELSE mov eax,FALSE ret .ENDIF mov eax,TRUE ret DlgProc endp end start
;########################################################### 源程序下载:[下载后请将*.htm扩展名去掉]
09/02/2006 Win32Asm快速教程笔记整理用了一下午和晚上的时间拜读了一套比较简单的win32asm教程,里面的错别字不少,初学者看看还是有帮助的[推荐]。
打包下载:[下载后去掉(.htm)扩展名,空间问题]
05/02/2006 自定义 DialogBox 基本操作Basics.inc
include windows.inc include kernel32.inc include user32.inc include Comctl32.inc include shell32.inc includelib kernel32.lib
includelib user32.lib includelib Comctl32.lib includelib shell32.lib DlgProc PROTO :HWND,:UINT,:WPARAM,:LPARAM
.const
IDD_DIALOG1 equ 101
;#########################################################################
.data NewCaption db 'Hello World',0 sTitle db 'Messagebox',0 .data?
hInstance dd ?
hBtn dd ? ;#########################################################################
Basics.asm
.386
.model flat, stdcall ;32 bit memory model option casemap :none ;case sensitive include Basics.inc
.code
start:
invoke GetModuleHandle,NULL ;获取当前模块句柄
mov hInstance,eax ;保存在hInstance invoke InitCommonControls ;初始化自定义控制库 invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL ;显示定义的对话框 invoke ExitProcess,0 ;退出进程 ;########################################################################
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM ;对话框过程
LOCAL buffer[64]:BYTE mov eax,uMsg
.if eax==WM_INITDIALOG ;对话框初始化消息 invoke GetDlgItem,hWin,1002 ;获取控件IDC_BTN2指针 mov hBtn,eax .elseif eax==WM_COMMAND mov eax,wParam ;通報訊息,也就是將特定的訊息(已經預先定義好)附加在WM_COMMAND訊息中的wParam參數的高字組, ;用來進一步區分產生WM_COMMAND訊息的控制項以及觸發的事件。 mov edx,eax shr edx,16 ;逻辑右移 and eax,0FFFFh ;高位清零,变为按钮标识 .if edx==BN_CLICKED .if eax==1001 ;IDC_BTN1 invoke SetWindowText,hWin,offset NewCaption ;Set dialog caption .elseif eax==1002 ;IDC_BTN2 invoke EnableWindow,hBtn,0 ;Disable this button .elseif eax==1003 ;IDC_BTN3 invoke EnableWindow,hBtn,1 ;Enable upper button .elseif eax==1004 ;IDC_BTN4 invoke SendDlgItemMessage,hWin,1005,WM_SETTEXT,0,offset NewCaption ;Change caption of static .elseif eax==1007 ;IDC_BTN5 invoke SendDlgItemMessage,hWin,1006,WM_GETTEXT,sizeof buffer,addr buffer ;Change the editbox text invoke MessageBox,hWin,addr buffer,offset sTitle,MB_OK ; invoke SendDlgItemMessage,hWin,1006,WM_SETTEXT,0,offset NewCaption ; .endif .endif .elseif eax==WM_CLOSE ;关闭消息
invoke EndDialog,hWin,0 ;关闭对话框 .else mov eax,FALSE ret .endif mov eax,TRUE ret DlgProc endp
end start
;说明:
;SendMessage(hwnd, BN_CLICKED, wParam, lParam) ;wParam的16位为按钮的ID,lParam为按钮的句柄 ;SendMessage(hwnd, BN_CLICKED, MAKELONG(ID_YOURBTN,0), hYourBtn); 03/02/2006 Oep Finder V1.0 by Human/MiNT 代码粗略分析.586p ;等待调试事件 ;下面是几个类型定义 14/12/2005 消息过滤过滤消息又称为消息陷阱。用户可能需要屏蔽某系消息或截获某些消息进行处理。消息过滤一般有三种途径: ◇ 重载构件继承的虚拟方法wndproc。 常用的是第2种方法,在上节已经介绍,第1种方法与第3种使用相似,重载虚拟方法wndproc的一般过程: procedure TMyObject.wndproc(var message:TMessage); end; 可以看出,在wndproc方法处理消息的优势是可以过滤整个范围内的消息,而不必为每个消息指定一个处理句柄,事实上TControl构件中就是利用它来过滤并处理所有的鼠标消息(从WM_MOUSEFIRST到WM_MOUSELAST)同样利用它可以阻止某些消息被发送给处理句柄。 procedure TControl.Wndproc(var message:TMessage); 一个完整的例子: unit myEdit; procedure Register; procedure Register; procedure Tmyedit.wndproc(var message:Tmessage); 消息处理所谓消息处理,就是应用程序以某种方式响应Windows消息。在Delphi中,每个消息都有各自的过程,这些用于消息处理的过程必须满足3个条件: ◇ 这个过程必须是一个对象中的方法。 下面是一个处理WM_PAINT消息的过程的代码: procedure WMPaint(var mMsg:TWMPaint);message:WM_PAINT; 然后在单元的Implementation部分实现这个过程。 procedure TForm1.WMPaint(var Msg:TWMPaint); 上述代码中的Inherited语句将传递消息给祖先对象,也就是把消息传递给TForm中处理WM_PAINT消息的过程。 UINT RegisterWindowMessage(lpsz)函数说明:RegisterWindowMessage函数定义一个新的窗口消息,该消息保证在整个系统范围内是唯一的。调用SendMessage或PostMessage函数时可以使用该函数返回的消息值。 Windows发送消息的方式(1)VCL的Perform()适用于所有TControl派生对象。只要知道Form或组件的实例,Perform()可以发送消息给任何一个Form或组件。 两个API的参数是一致的。参数hWnd指接收消息的窗口句柄;参数Msg指消息标识符;参数Wparam指32位的特定附加信息;参数Lparam指32位的特定附加信息。 (一)在程序内部发送消息: Const WM_MYMESSAGE=WM_USER+200; 然后定义一个消息处理过程,处理WM_MYMESSAGE消息 private procedure Tform.doMyMessage(var Msg:TMessage); (二)在应用程序之间发送消息: 最好调用RegisterWindowMessage()函数,这个函数能够确保每个应用程序使用一致的消息序号。 (三)广播消息 TWinControl的派生对象可以调用Broadcast()向它的子组件广播一个消息,当需要向一组组件发送相同的消息时,便可以使用这种技术。例如,Panel1可以给它的所有子组件发送一个叫UM_FOO的自定义消息: var 还可以利用SendMessage()和PostMessage()函数,需要把hWnd参数设置为HWND_BROADCAST,它代表向所有的窗口发送消息。 SendMessage(HWND_BROADCAST,FMessageID,0,0); VCL 的消息处理原理每个VCL 组件都有内在的消息处理机制,在建立一个窗体或加入一个组件时,VCL 就已经注册了一个消息接受例程MainWndProc,这个例程是每个窗体和组件所固有的。Delphi内部使用这个例程接收来自各方面的消息并把它们发送给适当的处理方法,如果没有特定的处理方法,则调用缺省的消息处理句柄。 MainWndProc 不直接处理消息,也不能被重载,而是交由WndProc 方法处理并提供异常保护。WndProc 是在TControl类中定义的一个虚拟方法,可覆盖,可以对自己关心的消息进行截获、处理,提供自定义的消息处理例程。对于不处理的要调用继承让父类去处理,这也是非常好的编程习惯。WndProc 调用Dispatch方法进行消息分配,而Dispatch方法将根据消息号码调用组件的最后继承类中处理此消息的句柄方法。如果此组件和它的祖先类中都没有对应此消息的处理句柄,Dispatch方法便会调用DefauleHandler方法。DefauleHandler方法是定义于Tobject中的虚拟方法,它只实现简单的返回而不对消息进行任何处理。我们可以通过此虚拟方法的重载,在子类中实现对消息的缺省处理。 Tobject.Dispatch派发消息时是按照继承链逆流而上的。首先找本类中用Message定义的消息处理方法,如果覆盖的话,则调用它来处理,如果没有就继续查找父类。首先从Message定义方法查起,然后再看看DefauleHandler中是否覆盖,这样一直找到TObject的DefauleHandler,在Tobject.DefauleHandler中什么都不处理,只是走到了消息处理的尽头。 窗口响应消息的步骤从消息的产生到消息被一个窗口响应,这其中要经历5 个步骤: (1)系统中发生了某个事件。 步骤(3)(4)构成了应用程序的消息循环。 Windows的消息系统的组成Windows的消息系统由以下3部分组成: ◇ 消息队列:Windows 能够为所有的应用程序维护一个消息队列,应用程序必须从消息队列中获取消息,然后分派给某个窗口。 15/10/2005 MapX学习(7)Layers.CreateLayer 方法
CreateLayer 方法允许您创建新的临时或永久 MapInfo 表图层。创建的表具有一个用于图元名的列,由标记和数据绑定使用。在添加或更新图元时,Name 属性将置于图元名称列中。 语法
[Layer=]OBJECT.CreateLayer (Name , [FileSpec] , [Position] , [KeyLength] , [CoordSys])
部分 说明
OBJECT Layer 集合对象。 Name 引用图层所用的名称(图层的用户名)。 FileSpec Variant:创建图层位置的路径名。文件名应该包括 .tab 扩展名。构成 MapInfo 表(.map、.dat 等)的其他文件在 .tab 文件所在的同一目录中创建。如果没有给定文件名,则将创建临时图层,该图层在地图销毁时删除。 Position Variant:图层列表中的初始位置。如果忽略,则字段图层定位算法将基于图层的类型指定图层顺序。 KeyLength Variant:添加到保存图元名称的表的列的长度。如果忽略,则默认为 32。 CoordSys Variant:CoordSys 对象,指定存储新图层的坐标系。可选;如果省略,则使用 Map.NumericCoordSys 属性。 注解 该方法返回 Layer 对象,添加到集合的 Layer 对象。新图层使用名为 GEONAME 的关键字列创建。
Dim lyr As MapXLib.Layer
' 创建作为动画图层的临时图层 ' 置于图层列表中的第一个位置,并使用默认关键字长度 Set lyr = Map1.Layers.CreateLayer("tempAnimate", ,1) Set Map1.Layers.AnimationLayer = lyr Map.SaveMapAsGeoset 方法
此方法创建 geoset 文件,表示地图的当前状态(图层信息,标记设置等)。 语法
OBJECT.SaveMapAsGeoset (name, filespec)
部分 说明
OBJECT 一个 Map 对象。 name 表示 geoset 友好名称的字符串(出现在 Geodictionary 中的描述)。如果指定空字符串,则将会使用地图的标题。 filespec 表示用于 geoset 文件的完全文件路径的字符串。如果没有指定路径,则新文件将置于数据目录中。如果没有指定扩展名,则将使用标准的 .gst 扩展名。如果指定文件已存在,则将会被覆盖。 注解 如果地图包含任意临时图层、用户绘制图层,或通过 miLayerInfoTypeServer 添加的远程图层,则相应图层将置于新的 geoset 文件之外,并且将会保存(在保存 geoset 之后)。通过 .tab 文件添加的远程图层将保存在结果 geoset 之内。如果地图中没有图层,则此方法还将报错。此外,形状文件 (*.shp) 不得保存到 geoset。
Visual Basic 示例
Map1.SaveMapAsGeoset "My latest map", "C:\Data\Most Recent.GST"
Delphi 示例
Map1.SaveMapAsGeoset('My latest map', 'C:\Data\Most Recent.GST');
MapX学习(6)检查图层类型
Dim lyr as Layer
For Each lyr in Map1.Layers Select Case lyr.Type Case miLayerTypeNormal MsgBox “Layer ” & lyr.Name & “ is a normal layer” Case miLayerTypeRaster MsgBox “Layer ” & lyr.Name & “ is a raster layer” Case miLayerTypeSeamless MsgBox “Layer ” & lyr.Name & “ is a seamless layer” Case miLayerTypeUnknown MsgBox “Layer ” & lyr.Name & “ is an unknown layer” Case miLayerTypeUserDraw MsgBox “Layer ” & lyr.Name & “ is a user draw layer” Case miLayerTypeDrilldown MsgBox “Layer ” & lyr.Name & “ is a drilldown layer” Next 在该代码片断中,我们将使用 MapX 定义的常数用于所有图层类型。这些常数统称LayerTypeConstants。 检查图元类型
Dim i as Integer
For i = 1 To Map1.Layers.Count Select Case Map1.Layers(i).PredominantFeatureType Case miFeatureTypeRegion MsgBox "Layer " & lyr.Name & " contains regions" Case miFeatureTypeLine MsgBox "Layer " & lyr.Name & " contains lines" Case miFeatureTypeSymbol MsgBox "Layer " & lyr.Name & " contains symbols" Case miFeatureTypeUnknown MsgBox "Layer " & lyr.Name & " contains unknown _ features" Case miFeatureTypeText MsgBox "Layer " & lyr.Name & "contains text features" End Select Next Layer 集合具有一个基础索引,以便我们可从一个索引值开始按照 Layer 集合计数来进行迭代。我们还评估集合中每个图层的 PredominantFeatureType 属性,使用 FeatureType 常数来评估PredominantFeatureType。 以下示例代码向使用 Layer 集合的地图添加了图层。通过修改 Layer 对象属性来添加方法和设置缩放图层。
Dim lyrStreets As Layer `Creates the layer object `Sets the Streets table as the layer object and orders the layer in `themap as number 3.
Set lyrStreets = Map1.Layers.Add(“treets.tab”, 3) lyrStreets.ZoomLayer = True `Sets zoom layering to true lyrStreets.ZoomMin = 0 `Sets minimum zoom to 0 miles lyrStreets.ZoomMax = 5 `Sets maximum zoom to 5 miles 在设置某一图层的缩放图层之后,当您在缩放级别上、下限进行缩放时,图层将显示在地图之上。您还可以使用缩放工具或地图对象的 ZoomTo 方法来地图上进行放大。使用 ZoomTo 方法,您可以指定缩放级别以及 x 和 y 坐标来确定地图中心。 Map1.ZoomTo 3, -70.26, 44.05 由于 3 英里的缩放值在缩放级别的限定值之内,因此 Streets 图层将以 (-70.26, 44.05) 的点为中心,然后在地图控制的宽度之内显示 3 英里的地图。 14/10/2005 MapX学习(5)某些 Layer 属性
Layer 对象代表采用地图图元形式的矢量制图数据,具有主要的图元类型,例如区域、直线或符号。通常 Layer 对象相应于源自 MapInfo 表的地理对象。Layer 集合中的每个 Layer 对象的行为相互独立。其样式和其缩放图层可以基于单独的基础更改,图层之间互不影响。
AutoLabel
控制图层是否自动标记。“States” Map1.Layers(“tates”).AutoLabel = True Name
图层的名称。 MsgBox Map1.Layers(4).Name OverrideStyle
是否覆盖此图层的默认显示特征。 Map1.Layers(9).OverrideStyle = True Selectable
将 MapX 设置为识别用户何时单击此图层。 Map1.Layers(”tates”).Selectable = True Style
OverrideStyle 为 True 时要使用的图层样式。 Map1.Layers(9).Style = newstyleobject Visible
图层是否可见。 Map1.Layers.Item(2).Visible = False ZoomLayer
将缩放图层设置为开或闭。 Map1.Layers(“tates”).ZoomLayer = True ZoomMax
设置图层可见的最大缩放级别。 Map1.Layers(“tates”).ZoomMin = 580 ZoomMin
设置图层可见的最小缩放图层。 Map1.Layers(”tates”).ZoomMin = 45 Layer 集合中的地图图层按照增序索引显示(例如 Layers(1) 是顶层, Layers(2) 是 Layer(1) 之下的图层),底层最先绘制,顶层最后绘制。正确设定图层顺序非常重要。 |
|||||||||||||
|
|