<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 119  文章 - 3173  trackbacks - 0
    <2015年2月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    1234567

    交友莫獨(dú)酒,茅臺(tái)西鳳游。
    口干古井貢,心徜洋河流。
    稱(chēng)多情杜康,趟無(wú)量雙溝。
    贊中華巍巍,無(wú)此不銷(xiāo)愁。

    常用鏈接

    留言簿(68)

    隨筆分類(lèi)(136)

    隨筆檔案(122)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 525023
    • 排名 - 93

    最新評(píng)論

    為了讓偶寫(xiě)的eclipse系統(tǒng)托盤(pán)插件EaseTray1.0插件能在eclipse啟動(dòng)時(shí)加載,泡了半天書(shū)店,在于找到了怎么讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序,離解決問(wèn)題又近了一步。現(xiàn)在和大家分享下收獲。

    新建一個(gè)插件項(xiàng)目,增加一個(gè)org.eclipse.ui.startup擴(kuò)展點(diǎn),2006123101.jpg
    指向直接寫(xiě)的test.EasyStartup類(lèi)
    EasyStartup:
    ?1?package?test;
    ?2?
    ?3?import?org.eclipse.swt.widgets.Display;
    ?4?import?org.eclipse.ui.IStartup;
    ?5?
    ?6?public?class?EasyStartup?implements?IStartup?{
    ?7?????public?void?earlyStartup()?{
    ?8?????????Display.getDefault().syncExec(new?Runnable()?{
    ?9?????????????public?void?run()?{
    10?????????????????System.out.println("hello?start");
    11?????????????}
    12?????????});
    13?????}
    14?
    15?}
    作為插件運(yùn)行,控制臺(tái)會(huì)輸出:
    hello start

    呵呵,小小的成功。
    但是我還是無(wú)法獲取IWorkbenchWindow對(duì)象。。。。。。。。
    這樣我的插件還是不能啟動(dòng)時(shí)強(qiáng)制加載并初始化。。。。。。。。
    誰(shuí)知道怎么獲取IWorkbenchWindow!?
    posted on 2006-12-31 14:38 交口稱(chēng)贊 閱讀(3938) 評(píng)論(21)  編輯  收藏 所屬分類(lèi): Eclipse RCP SWT

    FeedBack:
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 15:28 交口稱(chēng)贊
    請(qǐng)知道的朋友指教下怎么弄  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 16:35 BeanSoft
    偶發(fā)現(xiàn)可以用 Display.getActiveShell (), 可以做個(gè)線程, 不停的循環(huán)檢測(cè)... 但是怎么判斷是不是 IWorkbenchWindow 偶就不清楚怎么搞了, 貌似有個(gè)朋友寫(xiě)的怎么運(yùn)行時(shí)候更改 RCP 應(yīng)用標(biāo)題的時(shí)候有類(lèi)似代碼.  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 17:29 交口稱(chēng)贊
    要監(jiān)聽(tīng)退出事件必須在IWorkbenchWindow對(duì)象加
    不然實(shí)現(xiàn)不了退出時(shí)最小化
    我在啟動(dòng)時(shí)能執(zhí)行初始化,
    但是獲取不到shell
    和IWorkbenchWindow  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 17:36 交口稱(chēng)贊
    你說(shuō)的那篇文章我看了,他是用自己的products去取代eclipse的

    相當(dāng)于把eclipse的東西作為插件放到自己的產(chǎn)品中加載,

    不是我想要的  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 17:46 交口稱(chēng)贊
    現(xiàn)在可以實(shí)現(xiàn)自動(dòng)加載
    最小化時(shí)候到托盤(pán)

    關(guān)閉還不行
    等都可以 了我再放新版本  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 17:50 交口稱(chēng)贊
    汗。。。。。。。。。
    你天天在線啊
    我試試

    我剛才寫(xiě)的
    Shell aa = Display.getCurrent().getActiveShell();
    System.out.println(aa.getText());
    for(Shell s :aa.getShells()) {
    System.out.println(s.getText());
    }

    System.out.println("hello start");
    沒(méi)反應(yīng)。。。。。。
    試試他的  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 17:59 BeanSoft
    public static void changeAppTitle(String newTitle) {
    Display display = Display.getDefault();
    if (display != null) {
    // Look at all the shells and pick the first one
    // that is a workbench window.
    Shell shells[] = display.getShells();
    for (int i = 0; i < shells.length; i++) {
    Object data = shells[i].getData();
    // Check whether this shell points to the Application main window's shell:
    if (data instanceof IWorkbenchWindow) {
    shells[i].setText(newTitle);
    break;
    }
    }
    }
    }

    我試了應(yīng)該可以, 只不過(guò)不要非法操作線程了..呵呵.今天來(lái)單位玩,所以在..  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 18:00 交口稱(chēng)贊
    瓦咔咔卡

    找到了

    package test;

    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.ui.IStartup;
    import org.eclipse.ui.IWorkbenchWindow;

    public class EasyStartup implements IStartup {
    public void earlyStartup() {
    Display.getDefault().syncExec(new Runnable() {
    public void run() {
    Shell[] shells = Display.getCurrent().getShells();
    System.out.println(shells.length);
    for(Shell _shell :shells) {
    if (_shell.getData() instanceof IWorkbenchWindow) {
    System.out.println("找到了!");
    }
    }

    System.out.println("hello start");
    }
    });
    }

    }

    多謝。。。。。。。。。。

    呵呵
    明天發(fā)個(gè)完美版的插件。。。。。。。。。。。。。
    終于能睡著覺(jué)了、
    不枉今天受的書(shū)店老板的白眼
    多謝BeanSoft   回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2006-12-31 19:34 交口稱(chēng)贊
    哈哈
    搞定了。
    終于弄好了。  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-01-24 13:51 alan
    你好,我照你的方法去添加了這個(gè)擴(kuò)展點(diǎn),但在后臺(tái)沒(méi)有看到打印出信息,我用的是eclipse3.2.1,我的代碼如下:
    在plugin.xml中
    <extension
    id="loginDialog"
    point="org.eclipse.ui.startup">
    <startup class="rcp3.LoginDialog" />
    </extension>
    rcp3.LoginDialog的代碼如下:
    package rcp3;

    import org.eclipse.jface.dialogs.MessageDialog;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.ui.IStartup;

    public class LoginDialog implements IStartup {

    public void earlyStartup() {
    System.out.println("Hello");
    Display.getDefault().syncExec(new Runnable() {
    public void run() {
    MessageDialog.openInformation(Display.getDefault()
    .getActiveShell(), "Title", "Message");
    }
    });
    }
    }

    后臺(tái)根本沒(méi)有打印出“Hello”,請(qǐng)問(wèn)這是什么原因啊,謝謝!  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-01-24 14:44 交口稱(chēng)贊
    System.out.println("Hello");
    寫(xiě)到run里面試試  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-03-20 16:06 iceman
    用這個(gè)試試。

    public void earlyStartup() {
    final IWorkbench workbench = PlatformUI.getWorkbench();
    workbench.getDisplay().asyncExec(new Runnable() {
    public void run() {
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
    if (window != null) {
    System.out.println("hello start");
    MessageDialog.openInformation(
    window.getShell(),
    "iceman Plug-in",
    "Hello1, Eclipse world");
    }
    }
    });
    }  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-30 11:47 Squall
    其實(shí)這個(gè)可不可作為一個(gè)驗(yàn)證,當(dāng)plugin啟動(dòng)時(shí)驗(yàn)證用戶是否有合法使用權(quán)?  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-30 12:24 交口稱(chēng)贊
    可以,但是光這個(gè)不行。
    你可以看看mueclipse怎么搞的  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-30 16:19 Squall
    你指myeclipse?但它不是免費(fèi)的,代碼也沒(méi)有公開(kāi)

    現(xiàn)在想為開(kāi)發(fā)的插件做一個(gè)注冊(cè),但找不到途徑.....
      回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-30 20:31 交口稱(chēng)贊
    但是他只有加密算法部分混淆了
    其他的代碼還是可以反編譯看看的

    問(wèn)題是java這塊很難做到不被破解  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-31 09:35 Squall
    至于破不破解就暫時(shí)忽略不計(jì)吧,

    請(qǐng)問(wèn)你知不知道,如果啟動(dòng)了eclipse后,有什么辦法令插件停止使用

    我試過(guò)在earlyStartup()里獲得那個(gè)插件對(duì)象后,

    調(diào)用shutdown(),getBundle().stop()都不行,插件仍然可以使用  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-31 10:22 交口稱(chēng)贊
    我覺(jué)得你想反了
    你功能插件去調(diào)用你的驗(yàn)證插件
    驗(yàn)證通過(guò)就給用,不通過(guò)不給用
    每個(gè)重要的方法都驗(yàn)證一下

    驗(yàn)證插件就是一個(gè)服務(wù)
    而不要反過(guò)來(lái)用驗(yàn)證插件去控制其他的插件
    驗(yàn)證插件應(yīng)該是被動(dòng)的

      回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-31 11:01 Squall
    也就是說(shuō)關(guān)于這個(gè)插件的每一個(gè)功能,如:“新建項(xiàng)目功能”,“運(yùn)行應(yīng)用功

    能”等,每調(diào)用到相關(guān)功能(即調(diào)用相關(guān)方法)之前驗(yàn)證一下?

    根據(jù)你所說(shuō)的,我想到如果啟動(dòng)時(shí)就是說(shuō)插件的start()方法調(diào)用時(shí),

    設(shè)一個(gè)boolean標(biāo)志位,然后在調(diào)用相關(guān)的功能方法時(shí)查詢這個(gè)標(biāo)志位,

    再?zèng)Q定是否繼續(xù)執(zhí)行,你的意思是不是大概是這樣?  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2007-05-31 12:14 交口稱(chēng)贊
    也就是說(shuō)關(guān)于這個(gè)插件的每一個(gè)功能,如:“新建項(xiàng)目功能”,“運(yùn)行應(yīng)用功

    能”等,每調(diào)用到相關(guān)功能(即調(diào)用相關(guān)方法)之前驗(yàn)證一下?

    是這樣的。

    當(dāng)我覺(jué)得最好不要去直接驗(yàn)證標(biāo)志位,這樣太容易被破解了。
    去調(diào)用方法去驗(yàn)證。
    最好搞個(gè)線程什么的。
    反正越繞越好越復(fù)雜越好。。。。。

    歡迎有經(jīng)驗(yàn)的朋友一起討論  回復(fù)  更多評(píng)論
      
    # re: 讓eclipse啟動(dòng)時(shí)執(zhí)行指定的程序 2015-02-04 17:45 suren
    學(xué)習(xí)了。

    來(lái)自:素人派
    http://surenpi.com  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 大学生一级特黄的免费大片视频| 99在线视频免费| 免费h成人黄漫画嘿咻破解版| 亚洲乱码卡三乱码新区| 999国内精品永久免费观看| 亚洲国产精品久久人人爱| 亚洲精品视频免费看| 亚洲午夜电影在线观看| 一本岛高清v不卡免费一三区| 亚洲国产日韩女人aaaaaa毛片在线| 国产精彩免费视频| 亚洲第一区二区快射影院| 久久精品亚洲AV久久久无码| 日本最新免费网站| 亚洲熟女综合一区二区三区| 精品久久久久久久免费加勒比| 偷自拍亚洲视频在线观看99| 亚洲美女在线国产| 国内精品一级毛片免费看| 亚洲一区精品中文字幕| 久久久高清免费视频| 国产成人精品久久亚洲高清不卡| 亚洲国产精品一区二区三区久久| 国产特黄一级一片免费| 久久亚洲私人国产精品| 日韩中文字幕在线免费观看| v片免费在线观看| 色播亚洲视频在线观看| 女人18特级一级毛片免费视频| 人妻仑乱A级毛片免费看| 亚洲天堂一区二区| 成人免费视频国产| 日韩免费在线视频| 亚洲一区二区三区在线观看网站| 全部免费毛片免费播放| 精品无码国产污污污免费网站 | 日本xxwwxxww在线视频免费| 一级人做人a爰免费视频 | 国产精品高清视亚洲一区二区| 亚洲视频在线精品| 青青青国产在线观看免费|