none
VB 有否方法在不用 win API 下, 建立一個無 console window 的 console application RRS feed

  • 問題

  • 因為要建立一個類似 scheduler 的東西, 但不想用 win form , 因為佔用很大的記憶空間 (大於 20mb), 所以用體積較小的 console, 但又不想 console window 出現。

    用以下 code 可做到, 但要用 win API

    using System.Runtime.InteropServices; 
     
    ... 
         
    [DllImport("user32.dll")] 
         
    public static extern IntPtr FindWindow(string lpClassName,string lpWindowName); 
     
         
    [DllImport("user32.dll")] 
         
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 
     
    ... 
     
             
    //Sometimes System.Windows.Forms.Application.ExecutablePath works for the caption depending on the system you are running under. 
             
    IntPtr hWnd = FindWindow(null, "Your console windows caption"); //put your console window caption here 
             
    if(hWnd != IntPtr.Zero) 
             
    { 
               
    //Hide the window 
               
    ShowWindow(hWnd, 0); // 0 = SW_HIDE 
             
    } 
     
     
             
    if(hWnd != IntPtr.Zero) 
             
    { 
               
    //Show window again 
               
    ShowWindow(hWnd, 1); //1 = SW_SHOWNORMA 
             
    } 

     

    2011年11月7日 下午 12:45

解答

所有回覆

  • 用視窗程式設定為沒有啟動視窗,使用 Sub Main 啟動,整個專案內沒視窗?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年11月7日 下午 12:49
  • 你意思是整個程式也不引進 system.windows.forms ? 我試過即使沒 "dim form1 = new Form1" , 程式佔用記憶體也是這麼大

    2011年11月11日 上午 06:43
  • 是指無視窗的背景執行嗎?

    .net的話,新增console application專案後,把專案屬性裡的輸出類型改為[windows 應用程式]就可以了 @@

    不知道是不是你的要求

     

    2011年11月11日 上午 08:07
  • 可以考慮建立Windows服務專案
    • 已提議為解答 Alex_Lee 2011年11月13日 下午 06:44
    • 已標示為解答 璉璉Moderator 2011年11月19日 上午 04:09
    2011年11月11日 下午 02:11
  • 是指無視窗的背景執行嗎?

    .net的話,新增console application專案後,把專案屬性裡的輸出類型改為[windows 應用程式]就可以了 @@

    不知道是不是你的要求

     


    但這樣做要引入 system.windows.forms, 會增大記億使用。
    2011年11月13日 下午 05:20