分割を使用した Vb6 プログラムの例。 Visual Basic 言語 - コードの記述例。 プログラムで時計を非表示にする

09.12.2020
この関数は、指定された数の部分文字列を含む 1 次元配列を返します。 この関数は、Join 関数の逆です。

構文

スプリット( 式[、区切り文字[、制限[、比較]]])

オプション

表現- 区切り文字を含む部分文字列を含む String 型の式。
デリミタ- 区切り文字として使用される文字を定義する Variant (String) 型の式。 引数を省略した場合は、空白文字 (" ") が使用されます。
限界- 返す要素の数を示す長い式。 デフォルトは -1 (すべての要素を返す) です。
比較する- 比較方法を示す数値パラメータ。

パラメータ 比較するは次の値を取ることができます。

戻り値

Variant (String) 型の 1 次元配列を返します。
Expression パラメータの長さがゼロの場合、関数は空の配列を返します。 Delimiter パラメーターの長さが 0 の場合、関数は 1 つの Expression 要素を含む配列を返します。

使用例

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "こんにちは! お元気ですか?"

arrMyArray = Split(strMyString) "「Hello!」を返します Debug.Print arrMyArray(0) End Sub以下も参照してください。

配列、

みなさん、こんにちは。この記事では、小さなプログラムに役立つコードを紹介したいと思います。 これを使用して、独自のより本格的なプログラムを作成することも、ここで説明されているまさにこれらの関数を探していることもできます。

すべてのコードは Microsoft Visual Basic v6.0 プログラミング環境で使用されました。

確認して終了

1 つ目の種類のプログラムまたは関数は、終了を確認するメッセージを伴う終了です。 一般に、Visual Basic プログラミング環境を開き、標準プロジェクトを作成し、フォーム上にボタンを 1 つ配置し、ボタンをクリックするとコード編集ウィンドウが開きます。そこに次のコードを挿入する必要があります。" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

ビープ音 薄暗いメッセージ As String 薄暗いボタンサンディコン As Integer 薄暗いタイトル As String 薄暗い応答 As String メッセージ = 「外出しますか?」

title = "終了<>プログラムを起動するためのパスワード

Dim パスワード、パスワード PassWord = "12345" Pword = InputBox("パスワードを入力してください") If Pword

PassWord then MsgBox "パスワードが正しくありません" End End If

ここで、12345 はプログラムを起動するためのパスワードです。 ただし、このコードはどこでも使用できます。

ビープ音 文字列としての薄暗いメッセージ 文字列としての薄暗いボタンサンディコン 整数としての薄暗いタイトル 文字列としての薄暗いタイトル message = "メッセージ" title = "Message" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

フォーム上に描画する

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.CurrentX = X Form1.CurrentY = Y End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 then Line (Form1.CurrentX, Form1.CurrentY)-(X, Y), QBColor(0) End If End Sub

QBColor(0) パラメータを使用して色を変更できます。 0 の代わりに別の数字を入力します。

コンピュータを再起動する

コンピュータを再起動するには、ボタンを配置して次のコードを貼り付けます。

Dim strComputer As String strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate, (Shutdown))!\\" _ & strComputer & "\root\cimv2") Set ColOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For ColOperatingSystems の各 ObjOperatingSystem ObjOperatingSystem.Reboot " 次に再起動するには

単一コピーでプログラムを起動する

次の例は、プログラムを 1 回だけ実行するのに役立ちます。 再起動すると、対応するメッセージが表示されます。 フォームコードに以下を挿入します。

Private Sub Form_Load() If App.PrevInstance = True then MsgBox 「プロジェクトはすでに開始されています!」

終了 終了の場合

コンピューターの電源を切る

コンピューターの電源をオフにするには、次のコードを使用できます。

Dim strComputer As String strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate,(Shutdown))!\\" _ & strComputer & "\root\cimv2") Set ColOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For各 ObjOperatingSystem incolOperatingSystems ObjOperatingSystem.ShutDown "シャットダウンするには次へ

プロセスを終了する

プロセスを終了するには、次のコードを使用できます。

シェル「Cmd /x/c taskkill /f /im ICQlite.exe」、vbvhite ICQlite.exe の代わりに任意のプロセスを使用できます。コンピューターの寿命はどれくらいですか?

プライベート宣言関数 GetTickCount Lib "kernel32" () As Long "そしてボタン コード内: Dim a_hour, a_nutrition, a_second a = Format(GetTickCount() / 1000, "0") "total minutes a_days = Int(a / 86400) a = a - a_days * 86400 a_hour = Int(a / 3600) a = a - a_hour * 3600 a_minut = Int(a / 60) a_ Second = a - a_min * 60 MsgBox "コンピュータは実行されています " & Str(a_days) & 「日」 & Str(a_hour) _ & 「時間」 & Str(a_分) & 「分」 & Str(a_秒) & 「秒」

レビューしました 単純な関数、ほぼどこでも使用できます。 次に、より深刻な例を見てみましょう。これらは大規模なプロジェクトを作成するのに非常に役立ちます。

フォルダーの操作例

ディレクトリの削除

プライベート宣言関数 RemoveDirectory& Lib _ "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) "ディレクトリを削除しています (空!) PathName$ = "D:\t" code& = RemoveDirectory(PathName) If code& = 0 then "エラーディレクトリを削除 Else "ディレクトリが削除されました End If

ディレクトリの作成

Sub MakeDir(dirname As String) Dim i As Long、path As String Do i = InStr(i + 1, dirname & "\", "\") path = Left$(dirname, i - 1) If Right$(path 、1)<>":" And Dir$(path, vbDirectory) = "" then MkDir path End If Loop until i >= Len(dirname) End Sub Private Sub Command1_Click() Call MakeDir("C:\Soft\1\2\3\ ") エンドサブ

サブフォルダーを含むすべてのフォルダーを一覧表示します

フォームに 2 つのテキスト フィールドとボタンを追加します。最初のテキスト フィールドの名前は StartText、2 番目のテキスト フィールドの名前は OutText です。 複数行プロパティ = true、ボタン名 = CmdStart

静的実行 As Boolean Dim AllDirs As New Collection Dim next_dir As Integer Dim dir_name As String Dim sub_dir As String Dim i As Integer Dim txt As String 実行中の場合は実行中 = False CmdStart.Enabled = False CmdStart.Caption = "停止中" それ以外の場合は実行中 = True MousePointer = vbHourglass CmdStart.Caption = "Stop" OutText.Text = "" DoEvents next_dir = 1 AllDirs.Add StartText.Text Do While next_dir<= AllDirs.Count dir_name = AllDirs(next_dir) next_dir = next_dir + 1 sub_dir = Dir$(dir_name & "\*", vbDirectory) Do While sub_dir <>"" UCase$(sub_dir) の場合<>「PAGEFILE.SYS」とサブディレクトリ<>「。」 そしてsub_dir<>".." then sub_dir = dir_name & "\" & sub_dir エラーが発生したら再開 Next If GetAttr(sub_dir) And vbDirectory then AllDirs.Add sub_dir End If sub_dir = Dir$(, vbDirectory) Loop DoEvents If Not running then Exit Do Loop txt = "" For i = 1 To AllDirs.Count txt = txt & AllDirs(i) & vbCrLf Next i OutText.Text = txt MousePointer = vbDefault unning = False End If

次に、プログラムを起動し、StartText テキスト フィールドに「C:\windows」と入力し、ボタンをクリックします。

ディレクトリのサイズ

Const MAX_PATH = 260 プライベート タイプ FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type プライベート タイプ WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type プライベート宣言関数 FindFirstFile Lib _ "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long プライベート宣言関数 FindNextFile Lib _ "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long 、ileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib _ "kernel32" (ByVal hFindFile As Long) As Long Public Function SizeOf(ByVal DirPath As String) As Double Dim hFind As Long Dim fdata As WIN32_FIND_DATA Dim dblSize As Double Dim sName As String Dim x As Long On Error Resume Next x = GetAttr(DirPath) If Err then SizeOf = 0: Exit Function If (x And vbDirectory) = vbDirectory then dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & " *.* ", vbSystem Or vbHidden Or vbDirectory) If Err.Number = 0 then hFind = FindFirstFile(EndSlash(DirPath) & "*.*", fdata) If hFind = 0 then Exit Function Do If (fdata.dwFileAttributes And vbDirectory) ) = vbDirectory then sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) If sName<>「。」 そしてsName<>".." then dblSize = dblSize + SizeOf(EndSlash(DirPath) & sName) End If Else dblSize = dblSize + fdata.nFileSizeHigh * 65536 + fdata.nFileSizeLow End If DoEvents Loop While FindNextFile(hFind, fdata)<>0 hFind = FindClose(hFind) End If Else On Error Resume Next dblSize = FileLen(DirPath) End If SizeOf = dblSize End Function プライベート関数 EndSlash(ByVal PathIn As String) As String If Right$(PathIn, 1) = "\" then EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() ""D:\soft" をサイズを知りたいディレクトリに置き換えてください MsgBox SizeOf("D:\soft") / 1000000エンドサブ

ファイルの操作例

コピー

C:\1\ フォルダーに 1.txt という名前のファイルがあり、これを C:\2\ にコピーする必要があるとします。これを行うには、次のコードを記述します。

ファイルコピー "C:\1\1.txt","C:\2\1.txt"

注記! ディレクトリ 2 に 1.txt という名前のファイルがすでに含まれている場合、そのファイルはディレクトリ 1 の 1.txt に置き換えられます。

プライベート宣言関数 CopyFile Lib _ "kernel32.dll" Alias "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Private Sub Command1_Click() " ファイル C:\1.txt をコピーDim retval As Long " 戻り値 "ファイルをコピーします。 retval = CopyFile("C:\1.txt", "D:\1.txt", 1) If retval = 0 then "If error MsgBox "コピーできません" Else "問題なければ MsgBox "ファイルがコピーされました。" End If End Sub

除去

たとえば、C:\ ドライブのルートからファイル 1.txt を削除したいとします。

Kill("C:\1.txt")

APIメソッド

Private Declare Function DeleteFile Lib _ "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() "ファイルの削除 C:\Samples\anyfile.txt Dim retval As Long "戻り値 retval = DeleteFile( "C:\1.txt") If retval = 1 then MsgBox "ファイルは正常に削除されました。"

エンドサブ

移動

たとえば、次のように移動できます。

ファイルコピー "C:\1.txt","C:\2\1.txt" Kill ("C:\1.txt")

ただし、次のようにした方が良いです (API 経由)。

Private Declare Function MoveFile Lib _ "kernel32.dll" Alias "MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long "戻り値 retval = MoveFile("C: \1 .txt", "C:\2\1.txt") If retval = 1 then MsgBox "移動に成功しました" Else MsgBox "エラー" End If End Sub

名前の変更

C:\ にあるファイル 1.txt の名前を 2.txt に変更するには、次のコードを使用します。

APIメソッド

ファイルコピー "C:\1.txt","C:\2.txt" Kill ("C:\1.txt")

プライベート宣言関数 MoveFile Lib _ "kernel32.dll" Alias "MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long " 戻り値 retval = MoveFile("C: \1 .txt", "C:\2.txt") If retval = 1 then MsgBox "成功" Else MsgBox "エラー" End If End Sub

ファイルサイズを決定する

ファイル サイズは次の 2 つの方法で決定できます。

OPEN 関数でファイルを開くことができる場合は、LOF 関数を使用できます。

Dim FileFree As Integer Dim FileSize As Long FileFree = FreeFile 入力用に「C:\WIN\GENERAL.TXT」を FileFree として開く FileSize = LOF(FileFree) FileFree を閉じる

または FileLen 関数を使用します

Dim lFileSize As Long FileSize = FileLen("C:\WIN\GENERAL.TXT")

プログラムで時計を非表示にする

オプション 明示的なプライベート宣言関数 FindWindow Lib _ "user32" エイリアス "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long プライベート宣言関数 FindWindowEx Lib _ "user32" エイリアス "FindWindowExA" _ (ByVal hWnd1 As Long、ByVal hWnd2 As Long、ByVal lpsz1 As String、ByVal lpsz2 As String) As Long Private Declare Function ShowWindow Lib _ "user32" (ByVal hwnd As Long、ByVal nCmdShow As Long) As Long Dim hnd As Long Private Sub Command1_Click() ShowWindow hnd, 0 End Sub Private Sub Command2_Click() ShowWindow hnd, 1 End Sub Private Sub Form_Load() hnd = FindWindow("Shell_TrayWnd", vbNullString) hnd = FindWindowEx(hnd, 0, "TrayNotifyWnd", vbNullString) hnd = FindWindowEx( hnd, 0, "TrayClockWClass", vbNullString) Command1.Caption = "時計を隠す" Command2.Caption = "時計を表示" End Sub

トレイアイコンを追加

モジュールを追加し、コードをそこに貼り付けます。

関数 Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer を宣言 Public Const NIM_ADD = 0 Public Const NIM_MODIFY = 1 Public Const NIM_DELETE = 2 Public Const NIF_MESSAGE = 1 Public Const NIF_ICON = 2 Public Const NIF_TIP = 4 Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long,tip As String) As Long Dim NOTIFYICONDATA としての nidTemp nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON または NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = アイコン nidTemp.szTip = ヒント & Chr$( 0) SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp) 関数終了

使用するには、フォームコードに次のコードを挿入します。

Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test" End Sub "Private Sub を削除するには Command1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub

スタートボタンをブロックする

プライベート宣言関数 FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long プライベート宣言関数 FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long、ByVal lpsz1 As String、ByVal lpsz2 As String) As Long Private Declare Function EnableWindow Lib "user32" _ (ByVal hwnd As Long、ByVal fEnable As Long) As Long Public Sub EnableStartButton(Boolean = True としてオプションで有効) Dim lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) Call EnableWindow(lHwnd&, CLng(Enabled)) End Sub Private Sub Command1_Click() EnableStartButton False "スタートボタン無効になっています End Sub Private Sub Command2_Click() EnableStartButton True "START ボタンは無効になっていません End Sub

INI ファイルからパラメータを読み取る

プログラムは FTP に接続し、ini ファイルにはサーバー、ログイン、ポート、パスワードのパラメータが含まれています。

まず、INI ファイルを作成します。

Servname=サーバー usern=ログインパスワード=パスワード port=ポート

プログラムフォルダーに配置する必要があります。 次に、モジュールに以下を挿入します。

プライベート宣言関数 WritePrivateProfileString Lib _ "kernel32" エイリアス "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _ ByVal lpString As String, ByVal lpFileName As String) As Long プライベート宣言関数 GetPrivateProfileString Lib _ "kernel32" エイリアス"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As String) As Long Public Function ReadIni(Razdel As String, Param) As String ReadIni = GetValue (Razdel, Param, App.Path & "\test.ini", "0") End Function Private Function GetValue(ByVal Section As String, _ ByVal Key As String, ByVal fFileName As String, Optional ByVal DefaultValue As String = vbNullString) As String Dim Data As String Data = String$(1000, Chr$(0)) If GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 then GetValue = Left$(Data, InStr (Data$, Chr $(0)) - 1) Else GetValue = DefaultValue End If Exit Function End Function

次に、フォームのコードに貼り付けます。

プライベート宣言関数 InternetOpen Lib _ "wininet.dll" エイリアス "InternetOpenA" (ByVal sAgent As String、ByVal nAccessType As Long、ByVal sProxyName As String、_ ByVal sProxyBypass As String、ByVal nFlags As Long) As Long プライベート宣言関数 InternetConnect Lib _ "wininet.dll" エイリアス "InternetConnectA" (ByVal hInternetSession As Long、ByVal sServerName As String、_ ByVal nServerPort As Integer、ByVal sUserName As String、ByVal sPassword As Long、ByVal nService As Long、_ ByVal dwFlags As Long 、ByVal dwContext As Long) As Long プライベート宣言関数 FtpPutFile Lib _ "wininet.dll" エイリアス "FtpPutFileA" (ByVal hFtpSession As Long、ByVal lpszLocalFile As String、_ ByVal lpszRemoteFile As String、ByVal dwFlags As Long、ByVal dwContext As Long) As Boolean Private Declare Function FtpGetFile Lib _ "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long、ByVal lpszRemoteFile As String、_ ByVal lpszNewFile As String、ByVal fFailIfExists As Boolean、ByVal dwFlagsAndAttributes As Long、_ ByVal dwFlags As Long、ByVal d wContext As Long ) As Boolean Private Declare Function InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) As Integer Dim rc& Dim rs&

そしてボタンのコードでは次のようになります。

rc& = InternetOpen("", 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("General", "servname"), "0", _ ReadIni("General", "usern"), ReadIni( "General", "pwd"), 1, 0, 0) If FtpGetFile(rs&, "Your file.txt", "path where", False, 0, 1, 0) = False then 呼び出しを終了 InternetCloseHandle(rs&) 呼び出しインターネットクローズハンドル(rc&)

実行中のプロセスのリスト

リストボックスと 1 つのボタンを追加し、次のコードを挿入します。

オプション 明示的なプライベート宣言関数 CreateToolhelpSnapshot Lib _ "Kernel32" エイリアス "CreateToolhelp32Snapshot" _ (ByVal lFlags As Long、ByVal lProcessID As Long) As Long プライベート宣言関数 ProcessFirst Lib _ "Kernel32" エイリアス "Process32First" _ (ByVal hSnapShot As Long、uProcess As PROCESSENTRY32) As Long Private Declare Function ProcessNext Lib _ "Kernel32" Alias "Process32Next" _ (ByVal hSnapShot As Long、uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long ) プライベート Const TH32CS_SNAPPROCESS As Long = 2& Private Const MAX_PATH As Integer = 260 プライベート タイプ PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long szExeFile As String * MAX_PATH と同じ長さの遅延End Type Di m hSnapShot As Long Dim uProcess As PROCESSENTRY32 Dim r As Long Private Sub Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) If hSnapShot = 0 then Exit Sub End If uProcess.dwSize = Len(uProcess) r = ProcessFirst(hSnapShot, uProcess) Do While r List1.AddItem uProcess.szExeFile r = ProcessNext(hSnapShot, uProcess) ループ呼び出し CloseHandle(hSnapShot) End Sub

プログラムをスタートアップに入れる

他のプログラムと同様に、プログラムを Windows で読み込むには、レジストリを使用できます。

2 つのボタンと次のコードを追加します。

Private Sub Command1_Click() "レジストリ エントリ Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\プログラムの名前", _ "プログラムへのパス" End Sub Private Sub Command2_Click() "レジストリから削除 Set Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\プログラムの名前" End Sub

そして、プログラムが Windows と一緒に読み込まれるようにするために、 セーフモード、次にこのコード:

まず、より本格的な方法 (念のため実行してください) バックアップコピーレジストリ)。

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "プログラムへのパス" End Sub Private Sub Command2_Click()"これはリカバリ用です Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Explorer.exe," End Sub

まあ、簡単な方法です。

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C:\\WINDOWS\\system32\\userinit.exe ,プログラムへのパス" End Sub Private Sub Command2_Click()"復元するには Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C : \\WINDOWS\\system32\\userinit.exe," End Sub

タスクバーを隠す

2 つのボタンを追加し、コードを貼り付けます。

プライベート宣言関数 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 プライベート宣言Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOW = &H40 "Hide Private Sub Command1_Click() hwnd1 = FindWindow("Shell_traywnd", " ") Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "Shows Private Sub Command2_Click() hwnd1 = FindWindow("Shell_traywnd", "") Call SetWindowPos(hwnd1, 0, 0, 0, 0、0、SWP_SHOWWINDOW) エンドサブ

RAR アーカイブを解凍します

RAR アーカイブを解凍するには、次のコードを使用できます。

WinRarApp = "C:\Program Files\WinRAR\WinRAR.exe x -o+" iPath = "C:\" iArhivName = "ファイル名.rar" adr = WinRarApp & " """ & iPath & iArhivName & """ " "" & iPath & """ " RetVal = Shell(adr, vbHide)

コンピューターに搭載されている RAM の量

ボタンを 1 つ追加し、次のコードを貼り付けます。

Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As TMemoryStatus) プライベート タイプ TMemoryStatus dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type Dim s As TMemoryStatus Private Sub Command1_Click( ) ms.dwLength = Len(ms) Call GlobalMemoryStatus(ms) MsgBox "Total:" & ms.dwTotalPhys & vbCr & "Free:" _ & ms.dwAvailPhys & vbCr & "used in %:" & ms.dwMemoryLoad End Sub

デスクトップアイコンを非表示にする

これは次のように行われます。 2 つのボタンを追加し、次のコードを貼り付けます。

プライベート宣言関数 ShowWindow& Lib "user32" (ByVal hwnd&, ByVal nCmdShow&) プライベート宣言関数 FindWindow Lib _ "user32" エイリアス "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const SW_HIDE = 0 Const SW_NORMAL = 1 Private Sub Command1_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Call ShowWindow(hHandle, SW_HIDE) End Sub Private Sub Command2_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Call ShowWindow(hHandle, SW_HIDE) (hHandle , SW_NORMAL) End Sub

Command1 ボタンを使用するとアイコンが非表示になり、Command2 ボタンを使用するとアイコンが表示されます。

以上です。上記の例がお役に立てば幸いです、さようなら!

こんにちは、みんな!
今日は暗号についてお話したいと思います。 特別な暗号化であるステガノグラフィーの使用例を作成しました。 この方法では、データ暗号化の事実そのものが隠蔽されます。 ステガノグラフィーには多くの種類があります。 音声データの下位ビットのデータを隠すLBS方式についてお話したいと思います。 ユーザーはオーディオ ファイルを交換しているように見えますが、実際には機密データを交換しています。 この方法を知らない人は、機密データの交換を疑うことさえありません。 場合によっては、これは非常に便利です。
これはどのように作動しますか?
WAVE-PCMファイル(非圧縮)には音声データが含まれています。 実際、音はアナログイベントです。 継続的な。 デジタル形式に変換するには、ある程度の損失を加えて量子化する必要があります。 このプロセスは、ビット深度とサンプリング周波数という 2 つのパラメーターによって特徴付けられます。 ビット深度は、各サンプルに含めることができる信号レベルの数に影響します。 サンプリング レートは、オーディオ データに含めることができる最大周波数に影響します。

私たちの場合、オーディオ データのビット深度のみに関心があります。 サンプルあたり 32、24、16、... ビットにすることができます。 ステガノグラフィーの主なアイデア (この場合) は、オーディオ データの下位ビットを書き換えることです。 使用するビットが多いほど、歪みは強くなります。
視覚的に:


図からわかるように、この方法では、すべての暗号化されたデータがオーディオ データの特定のビット ( この場合サンプルあたり 4 ビット)。 また、データを保存するには、暗号化されたファイルよりも大きなサイズの音声ファイルを使用する必要があることに注意してください。 たとえば、エンコードに 3 ビットを使用する場合、オーディオ ファイルはエンコードされるファイルの少なくとも 16/3 倍の大きさが必要になります。 16 としているのは、この例ではサンプルごとに 16 ビットを使用しているためです。
添付の例では、元のファイル名も保持しています。 データ形式は明確です。


パッケージ化が行われると、暗号化されたファイルからすべてのバイトが取得されます。 その後、次のバイトから必要なビットが抽出され、音声データの対応するビットもクリアされます。 これらのビットは、ビットごとの OR 演算を使用して設定されます。 マスクとシフトは必要なビットを抽出するために使用されます。 マスクは必要なビットを残し、シフトによりバイトの先頭にビットを配置します。
開梱はまったく逆のことが起こります。 オーディオ ファイルからビットが抽出され、元のファイルが組み立てられます。 ビット深度に応じたオーディオ ファイルのスペクトル:

この短いレビューがお役に立てば幸いです。
ご清聴ありがとうございました。

この章では、VB.NET の基本的な「武器」を紹介します。 材料のほとんどは次のとおりです。 簡単な概要すべてのプログラミング言語に共通する概念 (変数やループ命令など)、および基本的なデータ型 (主にさまざまな数値や文字列) の説明。 VB6 に精通している読者は、この章をざっと読んでもよいでしょう。

この章のほんの数例には、本格的な VB.NET プログラムで使用できる実際のコードが含まれています。 実際のところ、本格的な VB.NET プログラムは、クラスと呼ばれるテンプレートベースのオブジェクトなしでは実行できません。このトピックについては第 4 章で説明します。言語の基本的な構成から始めます。そうしないと、プリミティブに限定する必要があるからです。実用的な価値のないクラス。 この章では、ユーザー定義クラスについては説明せず、非常に強力な .NET Framework の組み込みクラスの使用方法の基本的な例のみを示します。

これから何が起こるでしょうか? 奇妙なことに、この章で書かれたプログラムは、初期の BASIC 時代、さらにはそれに先立つ Fortran や COBOL の時代の伝統的なプログラミングのスタイルに非常に似ています (いくつかの奇妙な、しかし必要な構文構造は別として)。 特に、後続の章のプログラムとは異なり、常に明確に定義された始まりと終わりがあり、制御は最初から最後まで転送されます (ただし、制御は特別なコマンドによって転送することもできます)。

はじめに述べたように、VB6 との人為的な互換性を可能な限り避けて、通常の .NET スタイルで書かれたプログラムを提示するように努めます。

すべての VB.NET アプリケーションにはエントリ ポイントが必要です。 エントリ ポイントには、起動時に自動的に実行されるコードが含まれており、その後、制御が残りのプログラム コードに移されます。 比較的単純なグラフィック アプリケーションでは、VB6 のように、エントリ ポイントが初期フォームに関連付けられている場合があります。 しかし、第 1 章で見たように、Windows フォームのコードは非常に複雑で、エントリ ポイントを見つけるのが難しい場合があります。 この章では、コンソール ウィンドウ (DOS セッション ウィンドウなど) で実行されるコンソール アプリケーションのみを説明します。 はい、VB.NET を使用すると、サーバー側のスクリプト プログラミングでよく使用される従来のコンソール アプリケーションを簡単に作成できます。

コンソール アプリケーションのエントリ ポイントはプロシージャです サブメインモジュール (プロシージャに類似) サブメイン VB6)。 コンソール アプリケーション アイコン ( コンソールアプリケーション)、VB.NET は、エントリ ポイント (プロシージャ) を持つ「スケルトン」アプリケーションを自動的に生成します。 サブメイン:

モジュール Module1 Sub Main() End Sub End モジュール

VB6 とは異なり、最初の行はモジュールの名前を指定します (コマンドは太字で表示されます)。 で この例ではデフォルト名 Modul el が使用されます。 規則に従って、モジュール名はファイル名と一致する必要があります。 最初の行のモジュール名を Module Test1 に変更したとします。 走ろうとすると コンソールアプリケーションエラーメッセージが表示されます:

「Test.Modulel」に起動コード「Sub Main」を指定しました。 「Test.Modulel」が見つかりませんでした

モジュールの作成後に名前を変更するには、次のようにします。

  1. プログラムウィンドウでモジュール名を変更します。
  2. ソリューション ウィンドウでモジュール ファイル名を変更します。
  3. 線の上で右クリック コンソールアプリケーションソリューションウィンドウで選択します コンテキストメニューチーム プロパティ.
  4. リストされていることを確認してください スタートアップオブジェクト表示されるダイアログボックス(図3.1)で、モジュール名を選択します。

VB6 と同様に、VB.NET プログラム (ソリューション) は複数のモジュールで構成できますが、プロシージャの存在は必要ありません。 サブメイン 1 つのモジュールでのみ許可されます。 コマンドに到達するとアプリケーションが終了します エンドサブ手順 サブメイン。 たとえば、伝説的な「Hello world」プログラムは次のようになります。

Module Modul el Sub Main() Console.WriteLine("Hello world") End Sub エンドモジュール

このプログラムを IDE で実行すると、「Hello world」という文字が表示された DOS ウィンドウが画面上ですばやく点滅します (すぐに消えます)。 コマンドが処理されるとウィンドウが閉じます エンドサブ.

スプリット機能を使用する VBAエクセル、その構文とパラメータ。 Split 関数によって返される値。 使用例。

Split 関数は、特別な区切り記号を使用して文字列を部分文字列に分割するために VBA Excel で設計されています。 区切り文字には、単一の文字または複数の文字の文字列を使用できます。 Split 関数は、部分文字列の配列から 1 つの文字列を作成する関数の逆関数です。

関数の構文

分割 (式,,,)

Split 関数の必須パラメータは Expression です。他のパラメータが明示的に指定されていない場合は、デフォルト値が使用されます。

関数パラメータ

*バイナリ比較 (0 または CompareMethod.Binary) が使用される場合、関数は大文字と小文字を区別します。 テキスト比較 (1 または CompareMethod.Text) が使用される場合、関数は大文字と小文字を区別しません。

戻り値

Split 関数は、指定されたパラメータを含む 0 からインデックス付けされた 1 次元配列を返します。 限界部分文字列の数。 ほとんどの場合、Split 関数はパラメーター値とともに使用されます。 限界ソース文字列内で見つかったすべての部分文字列が返される場合、デフォルトでは -1 に等しくなります。

例1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) MsgBox の End Sub 結果: 時間 ジデット

最初の例では、 デリミタそして 限界デフォルトでは。

例 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet","-", 2) MsgBox a(0) & vbNewLine & a(1) MsgBox の End Sub 結果: 時間 ネジデット

2番目の例では デリミタ= "-"、 限界 = 2.

Split 関数は、事前に宣言されたテキストを使用して結果を割り当てます。このテキストは、空の括弧の有無にかかわらず代入行で使用できます。 上記の例では、配列は括弧なしで指定されています。

指定された例のコードを Excel ワークブックの VBA モジュールにコピーし、それらがどのように機能するかを確認できます。 独自のデータを置き換えて実験して、分割機能の実際の感触を掴んでください。