SlideShare uma empresa Scribd logo
1 de 162
陳寬達  ( 陳昇瑋 ) 中央研究院  資訊科學研究所 Inside V isual C omponent L ibrary
Outlines ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Win32  開發環境 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
獨立的  4GB  位址空間- Windows 95/98  架構 0xFFFFFFFF ~ 0xC0000000 1 GB  區域。用於  VxD 、記憶體管理、系統程式碼,所有  Win32  處理程序共享。 0xBFFFFFFF ~ 0x80000000 1 GB  區域。用於記憶體對映檔案及  Win32 DLL ,所有  Win32  程序共享。 0x7FFFFFFF ~ 0x00400000 2143289344  位元組,約  2044 MB ,每個  Win32  處理程序私有區域。 0x003FFFFF ~ 0x00001000 4190208  位元組,約  4 MB ,放置  DOS  及  Win16  應用程式。 0x00000FFF ~ 0x00000000 4096  位元組,用於偵測不合法指標。
獨立的  4GB  位址空間- Windows NT  架構 2 GB  區域。用於作業系統、核心程式及驅動程式,應用程式無法存取。 0xFFFFFFFF ~ 0x80000000 0x7FFEFFFF ~ 0x00010000 2147352576  位元組,約  2047 MB ,每個  Win32  處理程序私有區域。 0x0000FFFF ~ 0x00000000 64 KB  區域。用於偵測不合法指標。 0x7FFFFFFF ~ 0x7FFF0000 64 KB  區域。用於偵測不合法指標。
多執行緒支援 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
何謂行程( process )? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
何謂執行緒( thread )? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
多執行緒程式 ,[object Object],[object Object],[object Object],[object Object]
多執行緒的優劣 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
執行緒的分類 ,[object Object],[object Object]
Win32 API ,[object Object],[object Object]
Win32 API ,[object Object]
DLL  釋名 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DLL  的重要性 ,[object Object],[object Object],[object Object],[object Object]
DLL  的重要性 ,[object Object]
DLL  的運作特徵 ,[object Object],[object Object],[object Object],[object Object]
DLL  的載入方式 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
檢視  DLL  提供的函式 E:INNTystem32>dumpbin /exports user32.dll Microsoft (R) COFF Binary File Dumper Version 5.00.7022 Copyright (C) Microsoft Corp 1992-1997. All rights reserved. Dump of file user32.dll File Type: DLL Section contains the following Exports for USER32.dll 0 characteristics 336A2A2A time date stamp Sat May 03 01:53:46 1997 0.00 version 1 ordinal base 634  number of functions 634  number of names ordinal hint  name 1  0  ActivateKeyboardLayout  (00015B1A) 2  1  AdjustWindowRect  (0000D704) 3  2  AdjustWindowRectEx  (00007D8E) 4  3  AnyPopup  (00043ABB) 5  4  AppendMenuA  (00011F57) 6  5  AppendMenuW  (0002D7A4)
檢視  DLL  提供的資源
訊息驅動 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
處處皆訊息 ,[object Object]
訊息的傳遞方式 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
訊息處理機制 USER32.DLL 訊息迴圈 視窗函式 messages post messages send / post messages while ( GetMessage (&Msg, NULL, NULL, NULL)) { TranslateMessage (Msg); DispatchMessage (Msg); } switch (Msg.Message) { //  視窗建立時 case WM_CREATE: ...  //  按下滑鼠左鍵 case WM_LBUTTONDOWN: ...    //  按下按鍵時 case WM_KEYDOWN: ...  //  關閉視窗時 case WM_CLOSE: ... }
傳遞視窗訊息 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],typedef struct tagMSG { //  訊息結構 HWND  hwnd;  UINT  message; WPARAM wParam; LPARAM lParam; DWORD  time; POINT  pt; } MSG;
使用視窗訊息 ,[object Object],[object Object],procedure TForm1.Button1Click(Sender: TObject); var Wnd: HWND; begin if wnd = FindWindow(nil, ' 小算盤 ') then begin PostMessage (Wnd, WM_KEYDOWN, WPARAM('1'), 0); PostMessage (Wnd, WM_DESTROY, 0, 0); end; end; procedure TForm1.Button1Click(Sender: TObject); var Wnd: HWND;  begin if wnd = FindWindow(nil, ' 小算盤 ') then begin SendMessage (Wnd, WM_SETTEXT, 0, LPARAM(PChar(' 測試,測試’ ))); end; end;
行程、執行緒、訊息佇列及 訊息迴圈 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
行程、執行緒、訊息佇列及 訊息迴圈 行程 執行緒 訊息佇列 程式碼 視窗  C  視窗函式 訊息迴圈 視窗  C 視窗  D 視窗  D  視窗函式 取出 分派 執行緒 訊息佇列 程式碼 視窗  A  視窗函式 訊息迴圈 視窗  A 視窗  B 視窗  B  視窗函式 取出 分派 工作執行緒 程式碼
應用程式架構
開發工具的型態及演進 ,[object Object],[object Object],[object Object],[object Object],[object Object]
開發工具的型態及演進 ,[object Object],[object Object],[object Object]
Win32  開發工具的比較 ,[object Object]
VCL  的多重面貌 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  的原始碼面貌 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  的編譯後單元面貌 ,[object Object],[object Object]
VCL  的類別及元件面貌 ,[object Object],[object Object],[object Object]
VCL  的執行檔面貌 ,[object Object],這是一個什麼事都沒做的  console mode  程式: 大小只有  16K ,因為它只用到  RTL  的  System  單元,與  VCL  完全無關。 而這個呢,是一個什麼事都沒做,但包含一個  form  的  VCL  程式: 292864  位元組減掉  16384  位元組等於  276480  位元組,多出來的這些就是  VCL  機械碼。 ,[object Object],[object Object]
VCL  的  RunTime  Package  面貌 ,[object Object],[object Object],[object Object],[object Object]
VCL  的  Run-Time Package  面貌 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  的  Run-Time Package  面貌 ,[object Object],[object Object]
VCL  的  Run-Time Package  面貌
學習  VCL  類別架構 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
學習  VCL  類別架構 ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  核心類別 ,[object Object]
VCL  核心類別- TObject ,[object Object],[object Object],[object Object],[object Object]
VCL  核心類別- TObject ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  核心類別- TObject ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  核心類別- TObject ,[object Object],[object Object],[object Object],void foo(void) { TCat cat;  //  在堆疊中建立  TCat  類別的  cat  物件 ,  進入  foo  時才建立 cat.Meow(); //  呼叫  cat  物件的  Meow()  方法 } TCat cat; //  在資料節區中建立  TCat  類別的  cat  物件 ,  程式啟動後即建立 void foo(void) { cat.Meow(); //  呼叫  cat  物件的  Meow()  方法 } void foo(void) { TButton* btn = new TButton(this);  //  在累堆中建立  TButton  類別的  btn  物件 btn->Show(); //  呼叫  btn  物件的  Show()  方法 delete btn; }
VCL  核心類別- TObject ,[object Object],[object Object],TCCalendar = class(TCustomGrid) private ...  procedure WMSize(var Message: TWMSize); message WM_SIZE; end;
VCL  核心類別- TPersistent ,[object Object],[object Object],[object Object],[object Object]
VCL  核心類別- TPersistent ,[object Object],[object Object],[object Object],[object Object],[object Object],TPersistent = class(TObject) protected ... procedure AssignTo(Dest: TPersistent); virtual; public ... procedure Assign(Source: TPersistent); virtual; end;
VCL  核心類別- TPersistent ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  核心類別- TPersistent ,[object Object],[object Object],{ TPersistent abstract class } {$M+} TPersistent = class(TObject) ... end; {$M-}
VCL  核心類別- TComponent ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別 ,[object Object]
VCL  控制項類別 ,[object Object]
VCL  控制項類別- TControl ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別- TWinControl ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別- TGraphicControl ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別- TCustomControl ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別分類 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  控制項類別分類 ,[object Object],:hwnd -c project1 Handle  Class WinProc TID Module 03071A  IME 77E952BA ED 00000000 030724  TForm1 00254477 ED 00010100 050732  TStaticText 011B0FAE ED 00000000 050730  TPanel 011B0FBB ED 00010000 03072E  TButton 011B0FC8 ED 00000000 030718  TApplication 011B0FEF ED 0100:0000
VCL  控制項類別分類 ,[object Object]
VCL  控制項的擁有關係 ,[object Object],[object Object],任何不具視窗的  TControl  元件都必須以一個  TWinControl  元件為  parent  元件,也就是被一個  TWinControl  元件包含,它才能夠出現在畫面上。
VCL  控制項的擁有關係 ,[object Object],[object Object]
VCL  程式運作類別 ,[object Object]
VCL  程式運作類別- TForm ,[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  程式運作類別- TApplication ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
VCL  RAD  支援類別 ,[object Object]
VCL  RAD  支援類別
TStream ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
TFiler ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
元件是啥咚咚? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
為什麼要自行撰寫元件? ,[object Object],[object Object],[object Object],[object Object],[object Object]
元件使用者 ,[object Object],[object Object],[object Object],[object Object]
元件發展者 ,[object Object],[object Object],[object Object],[object Object],[object Object]
自製元件的種類 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
撰寫元件六大步驟 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
選擇父代類別 ,[object Object],[object Object],[object Object],[object Object],[object Object]
各類型元件的祖先類別
加強型元件- TShellAboutLabel ,[object Object],[object Object],[object Object],ShellExecute(0, 'open', 'mailto:kuan@vclxx.com', nil,    nil, SW_SHOWNORMAL);
加強型元件- TFlatEdit ,[object Object],[object Object],[object Object]
功能型元件- TWordCount ,[object Object],[object Object],[object Object]
組合型元件- TSuperListBox ,[object Object],[object Object]
對話盒元件- TAboutBox ,[object Object],[object Object],[object Object]
另起爐灶可視元件- TRuler ,[object Object],[object Object],[object Object]
另起爐灶可視元件- TGradientEdit ,[object Object],[object Object],[object Object],[object Object],[object Object]
Real life samples from the lecturer ,[object Object],[object Object],[object Object],[object Object]
Sample 1 - TxColorMemo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sample 1 - TxColorMemo ,[object Object],[object Object]
Sample 2 - TxMarquee ,[object Object],[object Object],[object Object]
Sample 3 - TxHexEdit ,[object Object],[object Object],[object Object],[object Object],[object Object]
Sample 3 - TxHexEdit ,[object Object],[object Object]
Mechanisms behind RAD Environment ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Run Time Type Information
Run Time Type Information ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Where is RTTI ? ,[object Object],[object Object],[object Object],[object Object]
Unfold the RTTI Data of Objects ,[object Object],VMT structure: defined in System unit Pointer Instance Variable P: TMyObject Instance Data VMT Pointer ... Data field 1 Data field 2 Data field 3 Virtual Method Table ... -64 -60 -56 0 4 -4 ... Self Pointer Type Info Field Table Destroy First Virtual Method ... Init Table -76 PTypeInfo = ^TTypeInfo; TTypeInfo = record Kind: TTypeKind; Name: ShortString; {TypeData: TTypeData} end; Class function TObject.ClassInfo: Pointer;
What’s Inside the TTypeInfo Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Advantages RTTI Take to Programmers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Use is And as Operator ,[object Object],[object Object],procedure TForm1.BtnTypeCastClick(Sender: TObject); begin if Sender  is  TMenuItem then ShowMessage(‘Menu: ’ + TMenuItem(Sender).Caption) else  ShowMessage(‘Button: ’ + (Sender as TButton).Caption); end;
Know More Than Just Name Of Properties and Events ,[object Object],procedure TForm1.Button2Click(Sender: TObject); var I  : Integer; PropInfo: PPropInfo; begin for I := 0 to ComponentCount - 1 do begin PropInfo :=  GetPropInfo (Components[I]. ClassInfo , 'Color'); if PropInfo <> nil then SetOrdProp (Components[I], PropInfo, clRed); end; end;
Know More Than Just Name of Properties and Events ,[object Object],function IsDataAware(AComponent: TComponent): Boolean; var PropInfo: PPropInfo; begin //  檢查元件  AComponent  是否擁有  DataSource  屬性 PropInfo :=  GetPropInfo (AComponent.ClassInfo, 'DataSource'); Result := PropInfo <> nil; //  謹慎起見,檢查看看那個叫做  DataSource  屬性的型態是否為  TDataSource  或 //  其衍生類別 if Result then if not ((PropInfo^.Proptype^.Kind = tkClass) and  ( GetTypeData (PropInfo^.PropType^).ClassType. InheritsFrom (   TDataSource))) then  Result := False; end;
Examine Type Info with RTTI
RTTI on Daily Basis ,[object Object],[object Object],[object Object],[object Object],[object Object]
Streaming ,[object Object],[object Object],[object Object],[object Object],[object Object]
Streaming ,[object Object]
Streaming Elements ,[object Object],[object Object],[object Object]
Streaming Mechanism own write TWriter DFM file component TStream create WriteComponentRes function TStream.WriteComponent TStream.WriteComponentRes TStream.WriteDescent TStream.WriteDescentRes component component component component own component component component component Delphi RAD IDE / Programmer write
Multi-Appearance of Forms ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],= =
What We Can Do in Streaming Process ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Additional Data in Stream object Form1: TForm1 ... object Timer1: TTimer Left = 264 Top = 176 end object Memo1: TMemo ... Lines.Strings = ( 'Memo1' 'Line 2' 'Line 3') end object StatusBar1: TStatusBar ... Panels = < item Width = 50 end item Bevel = pbRaised Width = 50 end item Width = 50 end> end end
Overrided TComponent.DefineProperties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],procedure TComponent.DefineProperties(Filer: TFiler); var Ancestor: TComponent; Info: Longint; begin Info := 0; Ancestor := TComponent(Filer.Ancestor); if Ancestor <> nil then Info := Ancestor.FDesignInfo; Filer. DefineProperty ('Left', ReadLeft, WriteLeft, LongRec(FDesignInfo).Lo <> LongRec(Info).Lo); Filer. DefineProperty ('Top', ReadTop, WriteTop, LongRec(FDesignInfo).Hi <> LongRec(Info).Hi); end;
Overrided TStrings.DefineProperties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],procedure TStrings.DefineProperties(Filer: TFiler); function DoWrite: Boolean; begin if Filer.Ancestor <> nil then begin Result := True; if Filer.Ancestor is TStrings then Result := not Equals(TStrings(Filer.Ancestor)) end else Result := Count > 0; end; begin Filer. DefineProperty ('Strings', ReadData, WriteData, DoWrite); end;
Streaming on Daily Basis ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Other Topics on Streaming ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],TComponent = class(TPersistent) published property Name: TComponentName read FName write SetName stored False; property Tag: Longint read FTag write FTag  default   0 ; end;
Messaging ,[object Object],[object Object],[object Object]
Messaging USER32.DLL Message Loop (TApplication.ProcessMessage) TObjectInstance TObjectInstance TObjectInstance TObjectInstance TObjectInstance TObjectInstance WndProc Dispatch message method 1 message method 2 message method 3 ... DefaultHandler DefWindowProc window Forms.StdWndProc MainWndProc messages post messages send / post messages TWinControl ...
Opportunities of Intercepting Messages ,[object Object],[object Object],[object Object],[object Object],[object Object],TDog = class(TWinControl) private procedure WMLButtonDown(var Message: TWMLButtonDown);  message  WM_LBUTTONDOWN; procedure WMMouseMove(var Message: TWMMouseMove);  message  WM_MOUSEMOVE; end;
Other Topics on Window and Messaging ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hacking Time ,[object Object],[object Object],[object Object],[object Object]
ClassWalk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
How to search classes ? ,[object Object],[object Object],[object Object],[object Object]
Whether a Pointer points to a class ? ,[object Object],[object Object],[object Object],[object Object]
Program Result
VCLSpy ,[object Object],[object Object],[object Object]
How to achieve that ? ,[object Object],[object Object],[object Object],[object Object]
Whether a Window is a TWinControl Component ,[object Object],[object Object],WindowAtom := GlobalAddAtom(StrFmt(AtomText, 'Delphi%.8X',[ProcessId])); Result := Pointer(GetProp(Handle, MakeIntAtom(WindowAtom)));
Be Aware of Non-Windowed VCL Controls ,[object Object]
Get Properties from Components of Other Process ,[object Object],[object Object],[object Object],[object Object],[object Object]
Inject Code into Other Process ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Program Result
善用除錯工具,縮短開發時間 ,[object Object],[object Object],[object Object],[object Object]
資源保固機制 ,[object Object],[object Object],GetMem(p, 100); try ... //  儘情使用  p finally FreeMem(p); end; try ...  Exit; //  離開此  procedure  或  function finally ... //  善後工作 end;
例外處理機制 ,[object Object],[object Object],GetMem(pBuffer, 1000); if (pBuffer = nil) then begin /* error processing code here; */ end; //  取得  x,  計算  x  的倒數 if x = 0 then begin /* error processing code here; */ end;
例外處理機制 ,[object Object],[object Object],try edtTotal.Text := IntToStr( StrToInt( edtOp1.Text ) / StrToInt( edtOp2.Text ) ); except on EDivByZero do ShowMessage( ' Cannot divide by zero ' ); on EConvertError do ShowMessage( ' Error during conversion ' ); end;
例外處理機制 ,[object Object],[object Object],try if numItems = 0 then raise EDivByZero.Create( ' Cannot divide by zero ' ) // ^ throw your own exception else edtAvg.Text := FloatToStr( sum / numItems ); except edtAvg.Text := FloatToStr(0.0); raise; // <- re-throw the same exception end;
例外處理機制 ,[object Object],[object Object],EInvalidBalance = class(Exception); raise EInvalidBalance.Create( 'Invalid Number');
例外處理機制 ,[object Object],[object Object],[object Object]
Assert  程序 ,[object Object],[object Object],procedure TForm1.SetID(Id: Integer); begin Assert((id) >=  ID_MIN  and (id <=  ID_MAX )); ... //  正常處理 end; Assertion failed: test, file filename, line linenum
Assert  程序 ,[object Object],[object Object],[object Object],void __fastcall TForm1::SetID(int id) { char *p = malloc(100); assert(p != NULL); ... };
OutputDebugString  除錯字串 ,[object Object],[object Object],[object Object],[object Object]
OutputDebugString  除錯字串 ,[object Object]
系統層級除錯器- SoftICE ,[object Object]
系統層級除錯器- SoftICE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
系統層級除錯器- SoftICE
系統層級除錯器- SoftICE
Summary ,[object Object],[object Object],[object Object]
實作與理論 ,[object Object],[object Object],[object Object]
實作與理論 ,[object Object],[object Object],它們都是實作,可是理論都在裡頭。
實作與理論 ,[object Object],[object Object]
實作與理論 ,[object Object],[object Object],[object Object],[object Object]
參考書目-  Delphi ,[object Object],[object Object],[object Object],[object Object],[object Object]
參考書目 -  Windows Programming ,[object Object],[object Object],[object Object],[object Object]
參考書目-  OOA / OOD / OOP ,[object Object],[object Object],[object Object],[object Object]
參考書目-  Practical Programming  ,[object Object],[object Object],[object Object]
參考書目-  工具書 ,[object Object],[object Object]
Delphi  深度歷險 ,[object Object]
Delphi  深度論壇 ,[object Object]
Delphi  深度歷險 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
THE END 有緣再見! 陳昇瑋 http://www.iis.sinica.edu.tw/~swc

Mais conteúdo relacionado

Destaque

Research Skills I Learned in UIUC from Pi-Cheng Hsiu
Research Skills I Learned in UIUC from Pi-Cheng HsiuResearch Skills I Learned in UIUC from Pi-Cheng Hsiu
Research Skills I Learned in UIUC from Pi-Cheng HsiuSheng-Wei (Kuan-Ta) Chen
 
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...Sheng-Wei (Kuan-Ta) Chen
 
資料科學家未曾公開之資安研究事件簿
資料科學家未曾公開之資安研究事件簿資料科學家未曾公開之資安研究事件簿
資料科學家未曾公開之資安研究事件簿Sheng-Wei (Kuan-Ta) Chen
 
資料科學如何幫我們更瞭解捐款人?
資料科學如何幫我們更瞭解捐款人?資料科學如何幫我們更瞭解捐款人?
資料科學如何幫我們更瞭解捐款人?Sheng-Wei (Kuan-Ta) Chen
 
計算社會科學初探- 當電腦科學家遇上社會科學
計算社會科學初探-當電腦科學家遇上社會科學計算社會科學初探-當電腦科學家遇上社會科學
計算社會科學初探- 當電腦科學家遇上社會科學Sheng-Wei (Kuan-Ta) Chen
 
20160802 那些年,關於大學的那些事...
20160802 那些年,關於大學的那些事...20160802 那些年,關於大學的那些事...
20160802 那些年,關於大學的那些事...羅左欣
 
從鍵盤走向社會 @KCG
從鍵盤走向社會 @KCG從鍵盤走向社會 @KCG
從鍵盤走向社會 @KCGHsiao-hsien Yang
 
20150911 [社團事務] 跑酷社創社審查
20150911 [社團事務] 跑酷社創社審查20150911 [社團事務] 跑酷社創社審查
20150911 [社團事務] 跑酷社創社審查羅左欣
 
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作羅左欣
 
20161211 給社團人的一封信
20161211 給社團人的一封信20161211 給社團人的一封信
20161211 給社團人的一封信羅左欣
 
20160802企業大數據應用心法與技法—撿、找、人算、神算
20160802企業大數據應用心法與技法—撿、找、人算、神算20160802企業大數據應用心法與技法—撿、找、人算、神算
20160802企業大數據應用心法與技法—撿、找、人算、神算張大明 Ta-Ming Chang
 
20160829 夢想,Loading...
20160829 夢想,Loading...20160829 夢想,Loading...
20160829 夢想,Loading...羅左欣
 
20141214擔任活動執秘應注意之事項
20141214擔任活動執秘應注意之事項20141214擔任活動執秘應注意之事項
20141214擔任活動執秘應注意之事項羅左欣
 

Destaque (20)

Research Skills I Learned in UIUC from Pi-Cheng Hsiu
Research Skills I Learned in UIUC from Pi-Cheng HsiuResearch Skills I Learned in UIUC from Pi-Cheng Hsiu
Research Skills I Learned in UIUC from Pi-Cheng Hsiu
 
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...
Crowdsourcing beyond Mechanical Turk: Building Crowdmining Services for Your ...
 
資料科學家未曾公開之資安研究事件簿
資料科學家未曾公開之資安研究事件簿資料科學家未曾公開之資安研究事件簿
資料科學家未曾公開之資安研究事件簿
 
一位年輕探索者的建議
一位年輕探索者的建議一位年輕探索者的建議
一位年輕探索者的建議
 
當學術研究者遇見線上遊戲
當學術研究者遇見線上遊戲當學術研究者遇見線上遊戲
當學術研究者遇見線上遊戲
 
資料科學如何幫我們更瞭解捐款人?
資料科學如何幫我們更瞭解捐款人?資料科學如何幫我們更瞭解捐款人?
資料科學如何幫我們更瞭解捐款人?
 
計算社會科學初探- 當電腦科學家遇上社會科學
計算社會科學初探-當電腦科學家遇上社會科學計算社會科學初探-當電腦科學家遇上社會科學
計算社會科學初探- 當電腦科學家遇上社會科學
 
Web 2.0世代的資安議題
Web 2.0世代的資安議題Web 2.0世代的資安議題
Web 2.0世代的資安議題
 
20160802 那些年,關於大學的那些事...
20160802 那些年,關於大學的那些事...20160802 那些年,關於大學的那些事...
20160802 那些年,關於大學的那些事...
 
從鍵盤走向社會 @KCG
從鍵盤走向社會 @KCG從鍵盤走向社會 @KCG
從鍵盤走向社會 @KCG
 
線上遊戲與雲端運算
線上遊戲與雲端運算線上遊戲與雲端運算
線上遊戲與雲端運算
 
20150911 [社團事務] 跑酷社創社審查
20150911 [社團事務] 跑酷社創社審查20150911 [社團事務] 跑酷社創社審查
20150911 [社團事務] 跑酷社創社審查
 
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作
20150104各類型社團文件的製作,上傳以及活動舉辦的說明與操作
 
20161211 給社團人的一封信
20161211 給社團人的一封信20161211 給社團人的一封信
20161211 給社團人的一封信
 
一位程式人 PI 在中研院
一位程式人 PI 在中研院一位程式人 PI 在中研院
一位程式人 PI 在中研院
 
20160802企業大數據應用心法與技法—撿、找、人算、神算
20160802企業大數據應用心法與技法—撿、找、人算、神算20160802企業大數據應用心法與技法—撿、找、人算、神算
20160802企業大數據應用心法與技法—撿、找、人算、神算
 
20160829 夢想,Loading...
20160829 夢想,Loading...20160829 夢想,Loading...
20160829 夢想,Loading...
 
Network and Multimedia QoE Management
Network and Multimedia QoE ManagementNetwork and Multimedia QoE Management
Network and Multimedia QoE Management
 
My data簡介
My data簡介My data簡介
My data簡介
 
20141214擔任活動執秘應注意之事項
20141214擔任活動執秘應注意之事項20141214擔任活動執秘應注意之事項
20141214擔任活動執秘應注意之事項
 

Semelhante a Inside VCL

教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005洋夫 葉
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Liyao Chen
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式Will Huang
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告ahnlabchina
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告ahnlabchina
 
Silverlight 2.0 完全新手學堂,基礎入門 10 大招
Silverlight 2.0 完全新手學堂,基礎入門 10 大招Silverlight 2.0 完全新手學堂,基礎入門 10 大招
Silverlight 2.0 完全新手學堂,基礎入門 10 大招Chui-Wen Chiu
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Chui-Wen Chiu
 
OpenCV 2.4.2在codeblocks 10.05的環境設定
OpenCV 2.4.2在codeblocks 10.05的環境設定OpenCV 2.4.2在codeblocks 10.05的環境設定
OpenCV 2.4.2在codeblocks 10.05的環境設定菌 細
 

Semelhante a Inside VCL (20)

教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
 
C+
C+C+
C+
 
C#
C#C#
C#
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
Ch01
Ch01Ch01
Ch01
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
LLVM introduction
LLVM introductionLLVM introduction
LLVM introduction
 
安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告安博士Asec 2010年4月安全报告
安博士Asec 2010年4月安全报告
 
Silverlight 2.0 完全新手學堂,基礎入門 10 大招
Silverlight 2.0 完全新手學堂,基礎入門 10 大招Silverlight 2.0 完全新手學堂,基礎入門 10 大招
Silverlight 2.0 完全新手學堂,基礎入門 10 大招
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
C++
C++C++
C++
 
Dev307
Dev307Dev307
Dev307
 
系統程式 -- 第 5 章
系統程式 -- 第 5 章系統程式 -- 第 5 章
系統程式 -- 第 5 章
 
建置Python開發環境
建置Python開發環境建置Python開發環境
建置Python開發環境
 
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
 
OpenCV 2.4.2在codeblocks 10.05的環境設定
OpenCV 2.4.2在codeblocks 10.05的環境設定OpenCV 2.4.2在codeblocks 10.05的環境設定
OpenCV 2.4.2在codeblocks 10.05的環境設定
 
beidakejian
beidakejianbeidakejian
beidakejian
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 

Último

加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...ggbob1
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...黑客 接单【TG/微信qoqoqdqd】
 
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...黑客 接单【TG/微信qoqoqdqd】
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdfshanshanhui1
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxPriscilleXu
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...ggbob1
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務sardinesaying
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制gravestomas0
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??testhelper Sobrenome
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...黑客 接单【TG/微信qoqoqdqd】
 
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...黑客 接单【TG/微信qoqoqdqd】
 
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】黑客 接单【TG/微信qoqoqdqd】
 

Último (14)

加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
 
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptx
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
 
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
 
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
 

Inside VCL

  • 1. 陳寬達 ( 陳昇瑋 ) 中央研究院 資訊科學研究所 Inside V isual C omponent L ibrary
  • 2.
  • 3.
  • 4. 獨立的 4GB 位址空間- Windows 95/98 架構 0xFFFFFFFF ~ 0xC0000000 1 GB 區域。用於 VxD 、記憶體管理、系統程式碼,所有 Win32 處理程序共享。 0xBFFFFFFF ~ 0x80000000 1 GB 區域。用於記憶體對映檔案及 Win32 DLL ,所有 Win32 程序共享。 0x7FFFFFFF ~ 0x00400000 2143289344 位元組,約 2044 MB ,每個 Win32 處理程序私有區域。 0x003FFFFF ~ 0x00001000 4190208 位元組,約 4 MB ,放置 DOS 及 Win16 應用程式。 0x00000FFF ~ 0x00000000 4096 位元組,用於偵測不合法指標。
  • 5. 獨立的 4GB 位址空間- Windows NT 架構 2 GB 區域。用於作業系統、核心程式及驅動程式,應用程式無法存取。 0xFFFFFFFF ~ 0x80000000 0x7FFEFFFF ~ 0x00010000 2147352576 位元組,約 2047 MB ,每個 Win32 處理程序私有區域。 0x0000FFFF ~ 0x00000000 64 KB 區域。用於偵測不合法指標。 0x7FFFFFFF ~ 0x7FFF0000 64 KB 區域。用於偵測不合法指標。
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. 檢視 DLL 提供的函式 E:INNTystem32>dumpbin /exports user32.dll Microsoft (R) COFF Binary File Dumper Version 5.00.7022 Copyright (C) Microsoft Corp 1992-1997. All rights reserved. Dump of file user32.dll File Type: DLL Section contains the following Exports for USER32.dll 0 characteristics 336A2A2A time date stamp Sat May 03 01:53:46 1997 0.00 version 1 ordinal base 634 number of functions 634 number of names ordinal hint name 1 0 ActivateKeyboardLayout (00015B1A) 2 1 AdjustWindowRect (0000D704) 3 2 AdjustWindowRectEx (00007D8E) 4 3 AnyPopup (00043ABB) 5 4 AppendMenuA (00011F57) 6 5 AppendMenuW (0002D7A4)
  • 20. 檢視 DLL 提供的資源
  • 21.
  • 22.
  • 23.
  • 24. 訊息處理機制 USER32.DLL 訊息迴圈 視窗函式 messages post messages send / post messages while ( GetMessage (&Msg, NULL, NULL, NULL)) { TranslateMessage (Msg); DispatchMessage (Msg); } switch (Msg.Message) { // 視窗建立時 case WM_CREATE: ... // 按下滑鼠左鍵 case WM_LBUTTONDOWN: ... // 按下按鍵時 case WM_KEYDOWN: ... // 關閉視窗時 case WM_CLOSE: ... }
  • 25.
  • 26.
  • 27.
  • 28. 行程、執行緒、訊息佇列及 訊息迴圈 行程 執行緒 訊息佇列 程式碼 視窗 C 視窗函式 訊息迴圈 視窗 C 視窗 D 視窗 D 視窗函式 取出 分派 執行緒 訊息佇列 程式碼 視窗 A 視窗函式 訊息迴圈 視窗 A 視窗 B 視窗 B 視窗函式 取出 分派 工作執行緒 程式碼
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41. VCL 的 Run-Time Package 面貌
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70. VCL RAD 支援類別
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104. Examine Type Info with RTTI
  • 105.
  • 106.
  • 107.
  • 108.
  • 109. Streaming Mechanism own write TWriter DFM file component TStream create WriteComponentRes function TStream.WriteComponent TStream.WriteComponentRes TStream.WriteDescent TStream.WriteDescentRes component component component component own component component component component Delphi RAD IDE / Programmer write
  • 110.
  • 111.
  • 112. Additional Data in Stream object Form1: TForm1 ... object Timer1: TTimer Left = 264 Top = 176 end object Memo1: TMemo ... Lines.Strings = ( 'Memo1' 'Line 2' 'Line 3') end object StatusBar1: TStatusBar ... Panels = < item Width = 50 end item Bevel = pbRaised Width = 50 end item Width = 50 end> end end
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118. Messaging USER32.DLL Message Loop (TApplication.ProcessMessage) TObjectInstance TObjectInstance TObjectInstance TObjectInstance TObjectInstance TObjectInstance WndProc Dispatch message method 1 message method 2 message method 3 ... DefaultHandler DefWindowProc window Forms.StdWndProc MainWndProc messages post messages send / post messages TWinControl ...
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162. THE END 有緣再見! 陳昇瑋 http://www.iis.sinica.edu.tw/~swc