Time of Update: 2018-12-05
我們平時常見的三種中文內碼是:GB2312(簡體中文)、GBK、BIG5(繁體中文)。網上有很多中文內碼的專用轉換工具。我們碰到由於內碼不一致而導致的亂麻問題,用這些工具可以進行相互轉換。但論壇裡經常有人問如何在自己的程式中整合這些功能呢?本文將介紹如何利用 Windows 提供的API 函數來實現。轉換涉及到的 API 函數主要有兩個:MultiByteToWideChar 和 WideCharToMultiByte。有關這兩個函數的詳細文檔請參考
Time of Update: 2018-12-05
我寫了一個基於x86的boot。想通過磁碟片啟動。但是沒有磁碟片,所以就安裝了一個Vitual PC,然後虛擬了一個磁碟片,當然,這個磁碟片就是一個檔案。我猜這個檔案的第一個位元組就是對應於實際的磁碟片的0面0道1扇。我想把可執行檔按照位元組直接寫到這個檔案中去。結果證明,我得猜想是正確的。我得boot能夠正常工作。 把關鍵代碼寫出來: 說明:BootSctr.img是啟動程式的鏡像。 fl.vfd是虛擬磁碟的檔案 void CFloppyWriterDlg::OnButton1()
Time of Update: 2018-12-05
DateGrid是Visual Studio .NET中最通用,最靈活,功能最強的控制項,主要是以表格的形式顯示資料,並可根據需要編輯資料,在應用程式訪問資料庫使用較多的方法,DateGrid在Visual Studio 2005中以被功能更為強大的DateGridView代替,基本用法差不多,這裡用DateGridView為例,國際慣例,所有代碼均只實現功能,異常、資料驗證等等不考慮,如有需要請自行添加。 樣本1:表單:
Time of Update: 2018-12-05
建立database partition 1、建立需要建立資料庫分區的db instance 可使用命令建立db instance : db2icrt -s ESE -u db2admin,aaa123456 -h ANWENHAO DBINSTANCENAME 建立完成對應的instance 後需要重啟DB2 . 2、將建立的db instance 加入到DB2中: CATALOG LOCAL NODE DB2INST1 INSTANCE DB2INST1 SYSTEM
Time of Update: 2018-12-05
主要思路是通過原始通訊端來將通過本機網卡的IP層資料包捕獲! #ifndef _PROTO_H#define _PROTO_H 0x2009#include <winsock2.h>#include <ws2tcpip.h>#include <mstcpip.h>#pragma comment(lib, "Ws2_32.lib")#define MAX_PACK_LEN 65535 // The max IP packet to
Time of Update: 2018-12-05
先說一下全域鉤子是怎麼進入到我們的程式裡來的。假如有個程式A安裝了WH_GETMESSAGE的全域鉤子,鉤子函數在B.dll中,那麼當其它程式在調用GetMessage函數從自己的訊息佇列中取訊息的時候,系統發現程式A安裝了WH_GETMESSAGE的全域鉤子,就會檢查調用GetMessage的進程是否載入了B.dll,如果沒有,就調用LoadLibrary進行載入,然後調用B.dll中的鉤子過程。這樣,鉤子dll就會在所有調用GetMessage的進程中載入。 我們要做的工作,就是在系統調用
Time of Update: 2018-12-05
使用過OFFICE2000的人都知道,它的介面,尤其是菜單和工具條,可謂是讓人耳目一新。雖然Visual C++開發工具也提供了對工具條的支援,但通常只是按紐的集合,不能直接加入組合框等控制項,實現OFFICE2000風格的工具條。本執行個體針對其中的一個細節,講述了在Windows環境下用Visual C++6.0在工具條中加入平面下拉式方塊控制項方法,並實現了組合框的訊息響應函數,使得我們的程式看上去更加專業。程式編譯運行後的效果一所示:圖一、工具列中的平面下拉式方塊控制項 一、實現方法
Time of Update: 2018-12-05
緩衝區溢位通常表現為一個最為常見的漏洞而存在於今天的各種軟體之中,駭客可以用惡意的輸入,從而更改程式的執行流程,由此入侵相應的進程、電腦、或整個域。如果進程運行於一個高度受信的賬戶之下,如管理員或本地系統賬戶,那麼駭客帶來的破壞將是極其嚴重,並有潛在廣泛傳播的危險。近幾年來爆發的一些"知名"病毒,如紅色代碼、衝擊波、震蕩波等等,都源於C/C++代碼緩衝區溢位的結果。 從程式的角度來看,緩衝區溢位只是一個再簡單不過的編程錯誤--都是關於複製一個記憶體地區的內容到另一個記憶體地區,而目標記憶體地區
Time of Update: 2018-12-05
在設計資料庫應用程式的時候,經常需要將一些資訊從程式中獨立出來,以保證程式的可移植性。其中最重要的資訊就是資料庫的串連參數。 在Delphi中,獲得正確的資料庫連接參數的方法十分簡單,你只需要建立一個資料模組,在其中添加一個ADO Connection,雙擊之,然後在彈出的視窗中選“Use Connection String”,單擊“Build”按鈕,在“資料連結屬性”視窗中選擇適當的驅動引擎,並設定相應的串連參數就可以了。點擊“確認”後,系統將自動產生串連串,顯示在Object
Time of Update: 2018-12-05
這段時間研究了一下注入技術,今天有空來寫一下心得,以免以後忘記.用HOOK進行注入的思路主要如下:1.首先,寫一個鉤子,放在DLL中,然後,匯出設定鉤子的函數SetHook。2.在我的應用程式中,通過FindWindow來找出要注入的目標進程的ThreadId;3.在自己的程式中調用SetHook,傳入ThreadId;4.在SetHook中設定目標進程的線程鉤子,設定完成之後,通過
Time of Update: 2018-12-05
〖1001〗-遞迴太深;棧溢出。 〖1002〗-視窗無法在已發送的訊息上操作。 〖1003〗-無法完成此功能。 〖1004〗-無效標誌。 〖1005〗-此卷不包含可識別的檔案系統。請確定所有請求的檔案系統驅動程式已載入,且此卷未損壞。 〖1006〗-檔案所在的卷已被外部改變,因此開啟的檔案不再有效。 〖1007〗-無法在全螢幕模式下運行請求的操作。 〖1008〗-試圖引用不存在的令牌。 〖1009〗-配置註冊表資料庫損壞。 〖1010〗-配置登錄機碼無效。 〖1011〗-無法開啟配置登錄機碼。
Time of Update: 2018-12-05
協作層級 因為Windows是一個多任務環境,多個應用程式可能在任意時刻對一個裝置磁碟機進行操作。雖然使用協作層級,DirectX仍然確保每個應用程式不能以錯誤方式或在錯誤時刻訪問裝置。每個DirectSound應用程式都有一個協作層級,用於決定它被允許訪問裝置的程度。 在建立一個裝置對象後,你必須使用IDirectSound8::SetCooperativeLevel 方法為這個裝置設定協作層級。如果你不這麼做,將無法聽到聲音。下面這個例子為DirectSound裝置設定了協作層級,
Time of Update: 2018-12-05
1. 通過GetModuleHandle定位LoadLiabrary在Kernel32.dll中的虛擬位址!!(根據jerry 牛人的說法,就是kernel32.dll在任何進程中載入的位置都是一樣的)2. 提升當前進程的許可權,使其許可權提升為debug的許可權,這樣才能在目標進程中分配虛擬空間和讀寫虛擬空間操作。3.
Time of Update: 2018-12-05
typedef unsigned short UInt16;typedef unsigned int UInt32;//UDP.H interface out in parameterstypedef struct{ UInt16 port; UInt32 addr;} StunAddress4;// Define enum with different types of NATtypedef enum //NAT類型{ StunTypeUnknown=0,
Time of Update: 2018-12-05
工作以來一直在做.net方面的程式,以前自學的C++和MFC許久未碰了。今天恰逢周末休息,閑來翻看一本MFC的書,對序列化(Serialize)部分又研究了一番。在這次故地重遊之旅中,我又再一次讚歎於Microsoft Application Framework小組專家們的聰明才智,為開發人員創造出了一個如此優秀的Framwork。 人們都說,“發表是最好的回憶”,我也不妨在此回憶一番,記錄下這“MFC 序列化追憶之旅”。 下面是我寫的一個MFC
Time of Update: 2018-12-05
目前,在實驗室和工業應用的各種控制系統中,串口是常用的電腦與外部控制系統之間的資料轉送通道。由於串列通訊方便易行,所以應用廣泛。但是使用串列通訊,在即時性、速度、資料量等方面受到限制。而電腦的並行連接埠傳輸資料時是一次性傳送8個位(一個位元組)或更多,由於傳輸量較大,因此資料的傳輸速度要比串口快,在許多必須講究傳輸速度的控制系統裡,用PC並行連接埠與之串連就是一個很好的解決方案。 本文介紹PC並行連接埠在單片機等控制系統中作為數字I/O口的應用。在控制系統中,有許多的數字開關量、數字控制訊號、
Time of Update: 2018-12-05
首先在標頭檔定義中加入#include "nb30.h"#pragma comment(lib,"netapi32.lib")typedef struct _ASTAT_{ ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30];} ASTAT, * PASTAT;就可以這樣調用來擷取遠程網卡MAC地址了:CString GetMacAddress(CString sNetBiosName){ ASTAT Adapter; NCB
Time of Update: 2018-12-05
對於下面兩個變數:int *p = new int[10];int q[10];在watch視窗中查看有不同的效果,查看p的時候可以看到一個地址,展開+號只能看p[0]的值;查看q的時候也可以看到一個地址,但是展開+號可以看q[0]-q[9]的值。相比之下q的查看方式比p要方便多了。那麼有沒有辦法以q的方式查看p呢,這就是本文要介紹的一個調試技巧。首先我們需要寫如下兩行代碼:typedef int inta[10];inta *_int; 然後在watch視窗敲入一行:_int=p
Time of Update: 2018-12-05
combo box控制項。1.你在編輯狀態下點那個控制項的向下的三角形,就出冒出來一個可以調高度的東東。將高度調高,否則在執行時會不能顯示下拉選項。2.為combo box添加選項,在編輯狀態下選combo box控制項的屬性,選Data標籤,在編輯框中添加選項,按Ctrl-Enter來添加下一個選項。3.為combo box添加變數 combo box有兩個變數,CComboBox類變數和CString變數。 CComboBox變數用來設定combo
Time of Update: 2018-12-05
本文章幫你充分認識SQLPLUS命令。 remark:告訴SQLPLUS接下來的文字是注釋,不是命令。 set haedsep:標題分隔字元標識一個告訴SQLPLUS將一個標題分為兩行或更多行的字元。 ttitle:設定報表每一頁的頭標題。 btitle:設定報表每一頁的尾標題。 column:給SQLPLUS各種關於列的標題、格式和處理的指令。 break on:告訴SQLPLUS在報表的各部分間插入空格,或者將小計和總計斷開。 compute sum:令SQLPLUS計算小計。 set