提示一點,一種最簡單的方法是,自己做一個外殼程式(Shell),然後將要啟動並執行程式以某種方式放入到外殼程式中(比如以資源或者特定位置資料),而外殼程式可以抽取原可執行程式檔案得表徵圖,並可修改自己的表徵圖與之相同。這樣一來,經過修改的程式就是 外殼程式 + 原可執行程式(已作為資料存在於外殼程式中),運行後自然先啟動外殼程式,你可以在其中加入一些許可權判定的代碼,通過驗證後,外殼程式將自身中的真正可執行檔資料提取並運行。這裡面的要求是,外殼程式必須用純 WinAPI SDK
可能是我的C++基礎不好,記不得explicit是幹嘛用的了,所以網上搜了下,想想還是寫下來,以免再忘,先來個例子,說明一下問題:test.cc:class A{public:A(int a) : data(a){}int data;};class B{public:explicit B(int b) : data(b){}//就是這個了int data;};void func_a(){A a = 0;a = 1;}void func_b(){B b = 0;b = 1;}int main(){
在windows 9x、NT、2000下,所有的可執行檔都是基於Microsoft設計的一種新的檔案格式Portable Executable File Format(可移植的執行體),即PE格式。有一些時候,我們需要對這些可執行檔進行修改,下面文字試圖詳細的描述PE檔案的格式及對PE格式檔案的修改。1、PE檔案架構構成DOS MZ headerDOS stubPE headerSection tableSection 1Section 2Section ...Section
#include <stdlib.h> /* For _MAX_PATH definition */#include <stdio.h>#include <malloc.h>#include <string.h>#include <conio.h>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10struct SqStack{char *base;char *top;int
auto_ptr是C++標準庫提供的類模板,它可以協助程式員自動管理用new運算式動態分配的單個對象,不過對用new運算式分配的數組管理沒有類似的支援,不能用auto_ptr儲存數組,如果這樣做了,結果將是未定義的.auto_ptr對象被初始化為指向由new運算式建立的動態指派至.當auto_ptr對象的生命期結束時,動態分配的對象被自動釋放.在使用auto_ptr類模板之前,必須包含下面的標頭檔:#include
類類比中使用了大量的函數指標,結構體等等,有必須對此進行效能分析,以便觀察這樣的結構對程式的整體效能有什麼程度的影響。 1.函數調用的開銷#define COUNTER XXvoid testfunc(){int i,k=0;for(i=0;i<YY;i )} 在測試程式裡面,我們使用的是一個測試函數,函數體內部可以通過改變YY的值來改變函數的耗時。測試對比是 迴圈調用XX次函數,和迴圈XX次函數內部的YY迴圈。 結果發現,在YY足夠小,X足夠大的情況下,函數調用耗時成為了主要原因。
我知道有一個FREETYPE庫可以把TRUETYPE字型檔渲染成點陣字。但是請注意TRUETYPE技術中包含了多項Apple公司的技術專利(主要是解釋其HINT碼),目前FREETYPE項目負責人已經收到Apple公司的通知,要求其申請Apple的專利許可,目前正在談判之中。想要避開專利問題,只好不用HINT,但是這樣一來顯示效果極差。其實如果只是在Windows下(不管中文還是E文),只要先把中文轉換成UNICODE串(MultiByteToWideChar?),再用TextOutW函數輸出即
void __fastcall TForm1::FormCreate(TObject *Sender){ SetWindowLong(TreeView1->Handle,GWL_STYLE, GetWindowLong(TreeView1->Handle,GWL_STYLE) | TVS_CHECKBOXES);}//判斷一個節點是否處於Checked狀態bool GetNodeChecked(TTreeNode *ANode){ TVITEM
首先在Form上放置一個RichEdit。在表單的建構函式中添加以下代碼:__fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner){ unsigned mask = SendMessage(RichEdit1->Handle, EM_GETEVENTMASK, 0, 0); SendMessage(RichEdit1->Handle, EM_SETEVENTMASK, 0, mask |
問:我的本本是P-M1.5G番茄花園版XP,為啥有時"我的電腦"中的"查看系統資訊"顯示的CPU有時是589MHZ而有時是789MHZ有時才是1.5G.是不是CPU不穩定啊??? 答:P-M 1.5G CPU使用了 Intel
//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------------------------------------------#pragma
在啟動電腦後,看不到Windows啟動畫面,而是出現了“Non-System disk or disk error,replace disk and press a key to
購買了液晶顯示器,你就應該知道調試它們跟以前調試CRT顯示器是截然不同的。如果你還不知道這個事兒,那趕緊跟隨我來,一步一步地將自己的液晶顯示器調至最佳狀態吧! 購買了液晶顯示器,你就應該知道調試它們跟以前調試CRT顯示器是截然不同的。如果你還不知道這個事兒,那趕緊跟隨我來,一步一步地將自己的液晶顯示器調至最佳狀態吧!雖然這些技巧主要都是針對液晶顯示器的,但其中有些對於CRT也會有所協助,所以還在使用CRT顯示器的朋友,也不要灰心哦! 安裝最新的顯卡驅動
本文介紹了如何在Windows環境下實現菜單中顯示曆史檔案清單,同時概要介紹了Tregistry類的使用方法。現在,在許多Windows應用程式都具有這樣一個功能:可以在檔案菜單下面顯示列出最近訪問過的檔案,這使使用者很容易再次訪問曾經訪問過的檔案。在過去幾年中,這項技術以成為擁有檔案功能表項目的應用程式的共同特色:如Wps系列和Office系列。在以前的DOS環境中,程式員一般通過建立一個檔案用來記錄檔案清單;那麼在Windows環境中,還有其他的方法嗎?最近筆者利用C++ Builder5.
我們知道,負責採購伺服器的決策人在選擇產品的時候,通常偏重於“看參數”,比如主頻、記憶體、擴充性,實際上集中於產品本身,看其技術指標是否領先:一個還是多個CPU;是雙核還是四核;記憶體通道是1GB還是4GB。實際上,這種觀察角度並不具備很大意義。急於邁上資訊化高速路的使用者,在選購伺服器的時候往往是一頭霧水。面對和PC指標類似但是應用模式差異巨大的伺服器,很多採購決策人在選購產品時,只能依靠那些參數來決定產品的型號。但是,當伺服器接入到實際應用以後,終端使用者往往發現,這
C++
在Winuser.h中定義了一些系統常用的資源,比如對話方塊的表徵圖,某些按鈕上的映像等。以下是部分OEM資源序號和一些標準ICON的ID://---------------------------------------------------------------------------// OEM Resource Ordinal Numbers#define OBM_OLD_CLOSE 32767#define OBM_SIZE 32766#define
在項目中需要用到程式更新的功能,同事介紹說是curl中的開發庫很牛x,又是跨平台(他們 總是這麼喜歡跨平台的東西 *_*),於是下載這個包測試了一下,確實不錯。準備正式用到項 目中,以下一個例子用於從互連網上抓取一個檔案下載到本地,並加上進度條顯示,做得挺 簡陋,不過功能差不多就這樣了。程式運行預覽.首先需要 加入多線程的機制,因為程式一邊在下載檔案,一邊在顯示進度條,單線程的方式肯定不行 ,所以我用到了wxTimer來實現,在downloadMain.h
一.1:取得要拖放的檔案名稱與路徑。2:取得目標檔案名與路徑。3:在拖動事件中把檔案從原目錄拷入目標目錄。4:取得檔案表徵圖放入TImageList。5:以一種方式顯示檔案名稱和表徵圖。這裡有些難度的是第四步,如何取得表徵圖,現把剛學來的再告訴你(以在TListView顯示表徵圖為例):在標頭檔中加入:#define NO_WIN32_LEAN_AND_MEAN在.cpp中加入:SHFILEINFO FileInfo;THandle
1 引言排序是電腦資料處理及其它許多軟體系統中常用的一種操作。排序的目的通常是為了便於尋找或為了適應某些尋找演算法的需要。例如,在統計高考成績的系統中,要產生幾個表。第一個表按考生的考號從小到大的順序,列出所有考生的成績;第二個表按考生的考試成績從高到低的順序,列出所有考生的成績等等。在這樣的系統中就要多次進行排序操作。排序(Sorting)是把一個無序的資料元素序列按某個關鍵字進行有序(遞增或遞減)排列的過程。通常,待排序的操作對象稱為資料表,它是資料元素(即記錄)的有限集合。在每一個資料元素