滿屏七夕
應該是個屏保軟體,用VB可以編寫屏幕保護軟體的。
這是一個例子:
熟悉Windows操作系統的朋友一定對Windows的屏幕保護程序不陌生吧。如何自己編寫Windows屏幕保護程序呢?當你看完下面的講解後便可以輕易地編寫一標準的Windows屏幕保護程序了!
一個標準的屏保有以下幾個特點:
一:它是以.SCR作為文件的擴展名!
二:它有三種運行方式。
(1)運行在預覽框中(用於預覽屏保的效果。在「顯示屬性」→「屏幕保護程序」→「小屏幕」)。(見圖)
(2)運行設置程序(用於設置一些相關的樣式。在「顯示屬性」→「屏幕保護程序」→「點擊設置按鈕」)。
(3)真正的運行屏保(屏保運行時的效果。在「顯示屬性」→「屏幕保護程序」→「點擊預覽」或滑鼠、鍵盤在指定的時間內無動作時)。
如何讓屏保識別當前需要運行哪一種方式呢?答案很簡單——分析Windows調用屏保的參數。下面以Windows 98為例向大家分析一下調用屏保的參數。
當Windows需要屏保顯示在「小屏幕」中時會在調用屏保的後面加上兩個參數。
如:myscr.scr /p 7981(參數一:/p 表示讓程序顯示在「小屏幕」里,參數二:7981表示「小屏幕」的句柄hWnd。這樣屏保就會得知Windows要它顯示在「小屏幕」中。)
當Windows需要屏保顯示設置對話框時會在調用屏保的後面不加或加上兩個參數。
如:myscr.scr或myscr.scr /C 7987(參數一:/C表示讓程序顯示設置對話框,參數二:7987表示該屬性頁的句柄。)
當Windows需要運行屏保時會在調用屏保的後面加上一個參數。
如:myscr.scr /S(參數:/S表示讓屏保運行。)
好了,知道了Windows如何讓屏保運行的三種方式後,接下來就要討論如何實現它們了。
實現原理:Windows通過某種方式調用屏保,屏保知道了它此時要干什麼便會在當前環境中搜索是否有相同的實例存在。如果該實例的運行方式與此次要啟動的運行方式不同則關閉前個實例,如果該實例的運行方式與此次要啟動的運行方式相同則關閉此次運行的實例。
顯然要實現這種方法靠VB的App.PrevInstance是不可行的。因為我們要達到的目的是:偵測到前一個實例後要關閉它然後啟動程序。而App.PrevInstance屬性只能返回當前是否已啟動一個應用程序的實例而不能對前個實例做些什麼。(實例 簡單地說就是相同的對象集合——同一程序。)在實現此方法之前首先向大家介紹三條API函數:GetClassName、FindWindow和SendMessage。其原型如下:
Declare Function GetClassName Lib 「user32」 Alias 「GetClassNameA」 (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function FindWindow Lib 「user32」 Alias 「FindWindowA」 (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SendMessage Lib 「user32」 Alias 「SendMessageA」 (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
GetClassName用於取得窗體的類名。調用成功後返回類名長度,失敗返回零。函數需要三個參數:參數一.窗體的句柄,參數二.存放類名的緩沖,參數三.緩沖的大小。
FindWindow用於尋找窗體。調用成功後返回窗體的句柄,失敗返回零。函數需要兩個參數:參數一.窗體的類名,參數二.窗體的標題。
SendMessage用於向窗體發送一消息。函數需要四個參數:參數一.窗體的句柄,參數二:發送的消息名稱,參數三、四.分別表示消息所附帶的參數。
使用了這三個函數便可輕易地實現關閉前有一個已啟動的實例從而達到我們的目的。
其次我們要實現如何讓屏幕保護程序顯示在預覽框中(「小屏幕」)。
要讓屏幕保護程序在預覽框中顯示必須動態地改變窗口的樣式使之成為「小屏幕」的子窗體,這樣才能使預覽框關閉時得到關閉消息。動態地改變窗口的樣式可以使用GetWindowLong、SetWindowLong和SetParent。
它們的原型如下:
Public Declare Function GetWindowLong Lib 「user32」 Alias 「GetWindowLongA」 (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib 「user32」 Alias 「SetWindowLongA」 (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function SetParent Lib 「user32」 (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
GetWindowLong的作用用於得到窗體的樣式。調用成功後返回窗體的樣式。函數需要兩個參數:參數一.窗體的句柄,參數二.要取得窗體的樣式只需使用常數GWL_STYLE。
SetWindowLong的作用用於設置窗體的樣式。函數需要三個參數:參數一.窗體的句柄,參數二.要設置窗體的樣式只需用常數GWL_STYLE,參數三.要設置窗體的樣式。
SetParent的作用用於設置子窗體屬於哪個父窗體。函數需要兩個參數:參數一.子窗體的句柄,參數二.父窗體的句柄。
知道了以上兩點就可編寫出標準的屏保。(關於效果就看你自己的了!)紙上談兵了一陣就要落實到真正的編程上了。為了著重講解屏保的實現方法故將屏保的效果簡單化。
首先新建一工程再添加一窗口,各屬性設置如下:
窗口 名稱 Caption BorderStyle
Form1 Frm_Setup 無 1 - None
Form2 Frm_Run 任意 1 - Fixed Single
其餘屬性均預設。再在Frm_Run中添加一Timer控制項,將該控制項的名稱改為Timer_Mov,Interval屬性制改為500。
添加兩個模塊,將Mole1的名稱改為Mod_Const,Mole2的名稱改為Mod_Main,添加以下代碼:
Mod_Const:
Option Explicit
Public Const WM_LOOK=「屏保預覽(demo)」
Public Const WM_SET=「屏保設置(demo)」
Public Const WM_RUN=「屏保運行(demo)」
Public Const HWND_TOP=0&
Public Const WS_CHILD=&H40000000
Public Const GWL_STYLE=(-16)
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Const SWP_NOZORDER=&H4
Public Const SWP_NOACTIVATE=&H10
Public Const SWP_SHOWWINDOW=&H40
Public Const WM_CLOSE=&H10
Declare Function GetClientRect Lib 「user32」 (ByVal hwnd As Long, lpRect As RECT) As Long
Declare Function GetClassName Lib 「user32」 Alias 「GetClassNameA」 (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function FindWindow Lib 「user32」 Alias 「FindWindowA」 (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SendMessage Lib 「user32」 Alias 「SendMessageA」 (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function SetParent Lib 「user32」 (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function GetWindowLong Lib 「user32」 Alias 「GetWindowLongA」 (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib 「user32」 Alias 「SetWindowLongA」 (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function SetWindowPos Lib 「user32」 (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Declare Function ShowCursor Lib 「user32」 (ByVal bShow As Long) As Long
Mod_Main:
Option Explicit
Sub Main() '程序運行入口
Dim ClassName As String * 64 』存放窗口的類名
Dim ExeCmd As String '存放命令行參數
GetClassName Frm_Setup.hwnd, ClassName, 64 』取得窗口的類名
ExeCmd=UCase(Command$) 』將調用的屏保的參數轉換成大寫後存放在變數ExeCmd里
If Not (InStr(ExeCmd,「/P」)=0)Then 』檢查屏保的調用參數中是否有「/P」參數
If Not (FindWindow(ClassName, WM_LOOK)=0)Then End 』如果找到已有同一個運行方式的實例存在則程序結束
ClosePreWindow ClassName, WM_SET 』關閉前面已啟動的其他運行方式的實例
ClosePreWindow ClassName, WM_RUN 』同上
SCR_Look
ElseIf Not (InStr(ExeCmd,「/S」)=0)Then
If Not (FindWindow(ClassName,WM_RUN)=0) Then End
ClosePreWindow ClassName, WM_LOOK 』同上
ClosePreWindow ClassName, WM_SET 』同上
Scr_Run
Else
If Not (FindWindow(ClassName, WM_SET)=0) Then End
ClosePreWindow ClassName, WM_LOOK 』同上
ClosePreWindow ClassName, WM_RUN 』同上
Scr_Setup
End If
End Sub
Public Sub ClosePreWindow(ClassName As String, WinCaption As String)
Dim PreWnd As Long
PreWnd=FindWindow(ClassName, WinCaption) 』尋找類名為ClassName,標題為WinCaption的窗口
If Not (PreWnd = 0) Then Call SendMessage(PreWnd, WM_CLOSE, 0, 0) 』如果窗口已找到則關閉它
End Sub
Public Sub SCR_Look()
Dim LookScrWnd As Long
Dim Style As Long
Dim LookRect As RECT
Frm_Run.Caption=WM_LOOK 』賦上具有相應運行方式的標題
LookScrWnd=Val(Right(Command$, Len(Command$) - 2)) 』取得小屏幕的窗口句柄
Style=GetWindowLong(Frm_Run.hwnd, GWL_STYLE) 』取得窗口的樣式
Style=Style Or WS_CHILD 』在窗口的樣式中加入子窗體常數
SetWindowLong Frm_Run.hwnd, GWL_STYLE, Style 』改變窗體的樣式
SetParent Frm_Run.hwnd, LookScrWnd 』設置窗體的父窗體
GetClientRect LookScrWnd, LookRect 』取得小屏幕的大小
SetWindowPos Frm_Run.hwnd, HWND_TOP, 0, 0, LookRect.Right, LookRect.Bottom, SWP_
NOZORDER Or SWP_NOACTIVATE Or SWP_SHOWWINDOW
'顯示窗體並將窗體的大小設置為小屏幕的大小以便覆蓋小屏幕
End Sub
Public Sub Scr_Setup()
Frm_Run.Caption=WM_SET 』賦上具有相應運行方式的標題
Frm_Setup.Show
End Sub
Public Sub Scr_Run()
Frm_Run.Caption = WM_RUN 』賦上具有相應運行方式的標題
ShowCursor False 』隱藏滑鼠
Frm_Run.Move 0, 0, Screen.Width, Screen.Height
Frm_Run.Show
End Sub
Public Sub CloseSCR()
ShowCursor True 』顯示滑鼠
Unload Frm_Setup 』卸載窗體關閉屏保
Unload Frm_Run 』同上
End Sub
Public Function Scan_RUN() As Boolean』偵測當前屏保的運行方式
If (Frm_Run.Caption = WM_RUN) Then 』如果屏保是以運行方式在運行則返回「真」,否則返回「假」
Scan_RUN=True
Else
Scan_RUN=False
End If
End Function
Frm_Run:
Option Explicit
Dim i As Integer 』定義循環變數
Dim OldX As Integer 』定義存放舊的滑鼠水平坐標
Dim OldY As Integer 』定義存放舊的滑鼠垂直坐標
Dim Pic(1) As New StdPicture 』定義一個圖片類的數組
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Mod_Main.Scan_RUN Then 』如果此時是在運行屏保則關閉屏保
Mod_Main.CloseSCR
End If
End Sub
Private Sub Form_Load()
i=1 』為循環變數賦初值
OldX=-1 』為舊滑鼠水平坐標賦初值
OldY=-1 』為舊滑鼠垂直坐標賦初值
Set Pic(0)=LoadPicture(請寫入圖片一的路徑和名稱) 』讀取圖片一
Set Pic(1)=LoadPicture(請寫入圖片二的路徑和名稱) 』讀取圖片二
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y A
s Single)
If Mod_Main.Scan_RUN Then 』如果此時是在運行屏保則關閉屏保
Mod_Main.CloseSCR
End If
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Mod_Main.Scan_RUN Then
If (OldX=-1) And (OldY=-1) Then
OldX=X
OldY=Y
Else
If (ScaleX(Abs(X-OldX),vbTwips,vbPixels)>= 3) Then
Mod_Main.CloseSCR 』將滑鼠當前的水平坐標和垂直坐標與舊滑鼠的水平坐標和垂直坐標相減其絕對值如果大於3個像素則退出屏保
End If
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Mod_Main.CloseSCR 』關閉屏保
End Sub
Private Sub Timer_Mov_Timer()
If (i>=2) Then
i=1 』如果循環變數大於圖片的數量則變數賦為1
Else
i=i+1 』否則循環變數加一
End If
Frm_Run.PaintPicture Pic(i-1),0,0,Width,Height,0,0,ScaleX(Pic(i-1).Width,vbHimetric,vbTwips),ScaleY(Pic(i-1).Height,vbHimetric,vbTwips)』在Frm_Run上畫圖
End Sub
Frm_Setup:
Option Explicit
Private Sub Com_OK_Click()
Mod_Main.CloseSCR
End Sub
Private Sub Form_Unload(Cancel As Integer)
Mod_Main.CloseSCR
End Sub
好了,一個標準的屏幕保護程序就編寫好了。按下F5運行試試看。不要忘了生成EXE文件時一定要將屏保的擴展名改為SCR並將其拷貝到Windows的System目錄里才可在屏保設置中見到喔!(程序在VB 5.0中編寫並運行通過。)
Ⅱ 七夕表白代碼是什麼
七夕表白代碼有以下5個:
1、ohh:留在我身邊
2、Mi manchi:我想你
3、manchi :想念你
4、lch will mit dir sein:我想和你一起
5、ich liebe dich:我愛你
以使用」我想和你一起「的代碼」lch will mit dir sein「為例,具體操作使用步驟如下:
一、首先選擇手機桌面上的微信客戶端進入微信,如下圖所示:
Ⅲ 微信聊天里如何掉落滿屏鮮花
只要在情人節和七夕節輸入「情人節快樂「,「love you」,「七夕」可以送上滿屏的玫瑰。
這是微信系統娛樂的小插件,是微信自帶的,純粹就是給體驗客戶一個小驚喜。 微信最新版本有一個特殊效果功能,如:特效,表情,符號,詞語大全,比如輸入撒花屏幕就會出現雪花效果,輸入生日快樂會有很多蛋糕。
(3)滿屏七夕擴展閱讀:
微信使用時的小技巧:
1、設定勿擾模式
勿擾模式就是設置某一時間段,關閉微信通知鈴聲。
方法如下:打開微信我,點設置的勿擾模式,將勿擾模式的方框變成綠色,設置開始時間(如晚上10:00)和結束時間(如早上07:00),返回微信即可。
2、怎樣不讓別人看到自己的朋友圈
有的微信聯系人,如果不想別人看到自身發的圖片或其它信息,可以設置屏蔽。點擊微信我,然後點設置中的隱私不讓他(她)看我的朋友圈,點擊加號選擇你要屏蔽的朋友(打鉤)最後確定即可。
3、給自己的微信上傳頭像
選定一張照片保存在手機圖庫里,打開微信,點擊最下方的我,再點擊左上方的人頭像,點擊頭像二字,在圖庫中選擇自身想上傳照片,再點擊使用即可。
4、將語音轉為文字
准備發信息時,按下鍵盤上帶麥克風的空格鍵,屏幕中央出現麥克風,提示你請說話。講完後,點擊說完了,手機進行語音識別後,將轉換後的文字信息顯示在信息欄中。一般適當修改後,就可以發送給朋友了。
提示:個別手機沒有此功能。普通話越標准,語音識別率越高。