锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2>浠嶢ction綾葷戶鎵跨殑Action閲嶅啓run鏂規(guī)硶,榪欐槸Action鎵ц鏃跺欒繍琛岀殑浠g爜.
3>鍐呯疆Action 閮藉疄鐜頒簡IWorkbenchAction,鐢ˋctionFactory.QUIT.create鑾峰緱Action.
3>鐩告瘮Delphi,JFace鐨凙ction綾繪洿綆鍗?鎶婁粬鏀懼湪menubarManager涓?浠栧氨鍙樻垚浜嗕竴涓彍鍗?鎶婁粬鏀懼湪 ToolbarManager涓婂氨鍙樻垚浜嗗伐鍏峰浘鏍?delphi閲岄潰涓涓彍鍗曟槸涓涓猰enuItem + Action緇勬垚鐨?宸ュ叿鏍忔槸Button + Action緇勬垚鐨?
2. 鑿滃崟:
2>menubarManager.add(Action).榪欐牱灝辨坊鍔犱簡涓涓瓙鑿滃崟.
3>fillMenuBar(IMenuManager menuBar) 鏂規(guī)硶浼犺繘鏉ョ殑menuBar灝辨槸鏈欏剁鐨勮彍鍗曢潰鏉?鐩稿綋浜巇elphi閲岄潰娣誨姞浜嗕竴涓猉PMenu鎺т歡,浼?xì)鍦╢orm涓婂鍔犱竴鏉¤彍鍗曢潰鏉?menuBar.add(menubarManager),榪欐牱娣誨姞浜嗕竴綰ц彍鍗?
3. 宸ュ叿鏍?/strong>
1>閲嶅啓fillCoolBar(ICoolBarManager coolBar) 鍙互娣誨姞宸ュ叿鏍?
2>鍒涘緩涓涓猅oolbarManager瀹炰緥.灝辨槸涓涓伐鍏鋒爮.鍙互鍒涘緩澶氫釜.
3>ToolbarManager.add(Action).榪欐牱灝辨槸娣誨姞浜嗕竴涓伐鍏峰浘鏍?
4>coolBar.add(ToolbarManager),灝辨槸鍦ㄧ晫闈笂娣誨姞涓鍧楀伐鍏鋒爮,鍙互澧炲姞澶氬潡宸ュ叿鏍?
1>鍙互浠庢墿灞曠偣閰嶇疆涓涓狝ction: 浠巔lugin.xml鐨凟xtension鏍囩,鐐筧dd,鎵懼嚭views
2>涔熷彲浠ヤ粠ViewPart緇ф壙涓涓被.createPartControl鏂規(guī)硶璁劇疆涓浜涘垵濮嬪寲宸ヤ綔.
3>View鍙互鐞嗚В涓篋elphi鐨刢hildwindow,瀛愮獥鍙?鍙互鏀懼悇縐嶆帶浠?鍙互鍏抽棴,鏈澶у寲,鏈灝忓寲.
4>View鐨勬樉紺烘槸渚濊禆涓涓忚鍥劇殑.閫忚鍥懼彲浠ョ悊瑙d負(fù)涓嶅悓鐨刅iew鎴朎ditor鐨勭粍鍚?灝卞彨閫忚鍥?
5>閲嶅啓Perspective榛樿閫忚鍥綾reateInitialLayout鏂規(guī)硶,騫剁敤layout.addView娣誨姞騫舵樉紺轟竴涓鍥?褰撳姞杞介粯璁よ鍥炬椂浼?xì)鍔犺浇璇iew紿楀彛.
5.Editor緙栬緫鍣?/strong>
1>Editor綾誨疄鐜頒簡ISaveablePart鎺ュ彛.騫剁粦瀹氫簡鍐呯疆鐨凷ave Action,SaveAsAction
2>褰撶偣鍑昏彍鍗曚腑鐨勪繚瀛?Action鏃朵細(xì)鑷姩璋冪敤doSave鏂規(guī)硶.鍙閲嶅啓doSave鏂規(guī)硶淇濆瓨褰撳墠鐨勬枃浠跺嵆鍙疄鐜頒繚瀛?
3>Editor渚濊禆浜嗕竴涓狤ditorInput綾?EditorInput綾繪垜鐞嗚В涓哄儚Struts涓殑ActionForm綾諱竴鏍?鐢ㄦ潵浼犻掑弬鏁扮粰Editor.
4>濡傛灉涓嶆槸闇姹傝繖縐嶉泦鎴愮紪杈戝櫒鐨勫姛鑳?涓鑸敤View鍙互婊¤凍,浣嗘槸濡傚儚QQ鑱婂ぉ榪欐牱鐨勭紪杈戞鐨勬椂鍊?鐢‥ditor寮鍙戝簲璇ユ槸涓涓笉閿欑殑閫夋嫨.delphi閲岄潰鍍忓彂閫佹秷鎭▼搴?閲囩敤浜嗕竴涓狧tmlEdit鎺т歡鎵嶈В鍐充簡榪欎釜闂.
5>Editor紿楀彛鍙互鐢╳indow.getActivePage.openEditor(input, TxtEditor.ID)鎵撳紑.
]]>
鏌ョ湅浜嗕唬鐮?鎵ц浜嗕竴涓瓨鍌ㄨ繃紼嬩富瑕佹墽琛屼簡Insert璇彞. 鎶婂嚑涓狪nsert璇彞鐨勭浉鍏沖瓧孌電殑闀垮害涓瀵規(guī)瘮鍙戠幇鏈夐暱搴︿笉鐩哥,鏇存敼鐩稿叧鐨勯暱搴?闂鎼炲畾.
]]>
dwStackSize: DWORD;
lpStartAddress: TFNThreadStartRoutine;
lpParameter: Pointer;
dwCreationFlags: DWORD;
var lpThreadId: DWORD): THandle; stdcall;
鍏朵腑lpStartAddress錛宭pParameter錛宭pThreadId涓変釜鍙傛暟鏄繀欏葷殑銆?br /> lpStartAddress鍙傛暟鎸囧悜鐨勬槸綰跨▼鎵ц浣揟hreadProc鐨勫紑濮嬪湴鍧錛?br /> lpParameter鎸囬拡綾誨瀷錛岀嚎紼嬬殑浼犲叆鍙傛暟錛屾垜浠鏋滄兂緇欑嚎紼嬫墽琛屼綋ThreadProc浼犻掓垜浠嚜宸辯殑鏁版嵁錛?br /> 灝辮閫氳繃瀹冧簡錛?br /> lpThreadId榪斿洖鍒涘緩綰跨▼ID,榪欐槸鎴戜滑鎺у埗綰跨▼蹇呴』鐨勩?/strong>
unit CreateThreadFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
MyParam = record //綰跨▼鐨勬椂鍊欎紶閫?br />
str:string;
end;
PMyParam=^MyParam; //Record綾誨瀷鎸囬拡
procedure CallAgent(msg: PMyParam);stdcall; //榪欎釜鏂規(guī)硶澹版槑涓轟粈涔堣鏀懼湪榪欓噷灝卞彲浠?鏀懼湪綾籘Form1閲岄潰灝變笉琛?
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{
鍙戦佹秷鎭粰娑堟伅寮瑰嚭浠g悊紼嬪簭 POPAgent.exe
DDZ
2010騫?鏈?8鏃?4:44:36
}
procedure TForm1.Button1Click(Sender: TObject);
var
PMyPara:PMyParam;
MyPara:MyParam;
Cthread: THandle; //綰跨▼鍙ユ焺
Tid: DWord;
begin
new(PMyPara) ; //鍙﹀榪欓噷榪樻湁涓涓棶棰?榪欓噷鍙狽ew寮杈熺被鍨?騫舵病鏈塅reeMem浼?xì)涓嶄細(xì)婕忎?br />
PMyPara.str := 'h澶綆鍙戝嚭鏉?;
Cthread:=CreateThread(nil,0,@CallAgent,PMyPara,0,Tid); //鍒涘緩涓涓嚎紼嬶紝鍚屾椂璋冪敤綰跨▼鍑芥暟
end;
procedure CallAgent(msg: PMyParam);stdcall;
var
HlAgent:HWND;
ds:TCopyDatastruct;
AgentMsg:string;
begin
//showmessage(msg^.str);
AgentMsg := msg.str;
//Application.ProcessMessages;
ds.cbData := Length(AgentMsg)+1;
GetMem(ds.lpData,ds.cbData); //鍒嗛厤鍐呭瓨
StrCopy(ds.lpData,PChar(AgentMsg)); //澶嶅埗鍊煎埌鎸囬拡
HlAgent :=FindWindow('TmsgpopMainCaller','璋冪敤鑰?);
if HlAgent <> 0 then
begin
SendMessage(HlAgent,WM_COPYDATA,0,Cardinal(@ds));
end;
FreeMem(ds.lpData); //閲婃斁鍐呭瓨 榪欓噷瑕侀噴鏀? 涓婇潰鐨凴ecord璁板綍瑕佷笉瑕侀噴鏀?鍛?鎴戣繖鏍峰啓浼?xì)鎶ラ敊鐨?br />
end;
end.
鐪嬭繖涓緥瀛愬彲浠ュ弬鑰?nbsp; CreateThread 鍑芥暟涓?綰跨▼闂寸殑閫氫俊鏂規(guī)硶.榪欎袱涓妧鏈偣.
procedure TMainForm.CallAgent(msg: string);
var
HlAgent:HWND;
ds:TCopyDatastruct; //瀹氫箟涓涓猅CopyDatastruct緇撴瀯浣撳彉閲?br />
begin
AgentMsg := msg;
ds.cbData := Length(msg)+1; //緇撴瀯浣撶殑絎竴涓厓绱? 闀垮害cbData
GetMem(ds.lpData,ds.cbData); //鍒嗛厤鍐呭瓨,緇撴瀯浣撶殑絎簩涓弬鏁? 鏁版嵁鐨勬寚閽坙pDATA
StrCopy(ds.lpData,PChar(msg)); //澶嶅埗鍊煎埌緇撴瀯鎸囬拡
HlAgent :=FindWindow('TmsgpopMainCaller','璋冪敤鑰?); //鏌ユ壘鐩爣紿椾綋鐨凥andle
if HlAgent <> 0 then
begin
//ShowMessage('涓? + IntToStr(Cardinal(@ds)));
SendMessage(HlAgent,WM_COPYDATA,0,Cardinal(@ds)); //鍙戦乄M_COPYDATA娑堟伅,騫跺甫涓婂弬鏁?@ds
end;
FreeMem(ds.lpData); //閲婃斁鏁版嵁鍐呭瓨
end;
2.
鎺ユ敹鏂圭▼搴?
public
procedure MyMessage(var m:TWmCopyData);message WM_CopyData; //瀹氫箟涓涓秷鎭搷搴旇繃紼?騫朵紶鍏ヤ竴涓猅WmCopyData鐨勫弬鏁?br />
...
procedure TmsgpopMainCaller.MyMessage(var m: TWmCopyData); //瀹炵幇鍝嶅簲
var
msg:string;
begin
msg :=StrPas(m.CopyDataStruct^.lpData); //鑾峰彇鍙傛暟鏁版嵁
ShowMessageForm := TShowMessageForm.Create(self,msg); //澶勭悊
end;