WS_EX_TOOLWIN का उपयोग किए बिना किसी फ़ॉर्म का टास्कबार बटन छुपाएं

मुझे टास्कबार से एक विंडोज फॉर्म छिपाने की जरूरत है, लेकिन मैं WS_EX_TOOLWINDOW का उपयोग नहीं कर सकता क्योंकि मुझे सिस्टम के मेनू और फॉर्म के शीर्षक पट्टी पर न्यूनतम/अधिकतम बटन चाहिए।

अगर मैं रनटाइम पर एक टूल विंडो में फॉर्म को स्विच करता हूं तो फॉर्म स्किनिंग भर जाती है। वेब पर खोज से मैं देखता हूं कि वीबी में एक शोइन टास्कबार संपत्ति है और मैं सोच रहा हूं कि यह वही करेगा जो मैं चाहता हूं, और क्या इसे डेल्फी 2006 में कार्यान्वित किया जा सकता है। यह परियोजना एक COM सर्वर है और इसमें कोई मुख्यफॉर्म नहीं है।

0

4 उत्तर

इस सटीक समस्या के बारे में एक दिलचस्प चर्चा है यहां (एक वीबी 6 परिप्रेक्ष्य से)।

आपके प्रश्न के परिप्रेक्ष्य से सबसे प्रासंगिक बिट यह है:

"When you create a window, the taskbar examines the window's extended style to see if either the WS_EX_APPWINDOW (&H40000) or WS_EX_TOOLWINDOW (&H80) style is turned on. If WS_EX_APPWINDOW is turned on, the taskbar shows a button for the window, and if WS_EX_ TOOLWINDOW is turned on, the taskbar does not show a button for the window. A window should never have both of these extended styles. If the window doesn't have either of these styles, the taskbar decides to create a button if the window is unowned and does not create a button if the window is owned."

Incidentally, you use the GetWindow API function with the GW_OWNER flag to determine whether a window is owned.

0
जोड़ा

http://www.scalabium.com/faq/dct0096.htm के धन्यवाद के साथ ।

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
  ShowWindow(Application.Handle, SW_SHOW);
end;

मैंने इसका परीक्षण किया और यह डेल्फी 2006 के साथ काम किया। और विंडोज मेनू और न्यूनतम/अधिकतम बटन अभी भी दिखाई दे रहे हैं।

0
जोड़ा
डी 7 में भी काम करता है
जोड़ा लेखक Jamie, स्रोत

डेल्फी एक्सई (2010) में यह पूरी तरह से काम करता है: आप मुख्य रूप से संपादित करें shoud,

program prog;  

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

begin
Application.Initialize;

// this value is set to "true", but you shoud set it "false"
Application.MainFormOnTaskbar := false;

Application.CreateForm(TForm1, Form1);
Application.Run;
end.

(इस मुख्य रूप के लिए "मॉडलिंग दृश्य" विंडो में खोजें)

इसके बाद, unit1.pas पर जाएं, आपकी मुख्य रूप इकाई और फॉर्म 1 की "ऑनशो" घटना करें:

procedure TForm1.FormShow(Sender: TObject);

begin

ShowWindow(Application.Handle, SW_HIDE);

end;

इससे मदद मिलेगी, मुझे एक ही समस्या थी, पूरे नेट की खोज की लेकिन बिना किसी प्रस्ताव के

0
जोड़ा

मैं विंडोज टास्कबार में टेक्स्टबॉक्स को एकीकृत करने के लिए कोड का एक टुकड़ा देख रहा हूं।

मैं एक टूलबार बनाने की योजना बना रहा हूं जिसे मैं इसे टास्कबार में एकीकृत नहीं कर सकता।

आपके सहयोग के लिए धन्यवाद पी.जे.

0
जोड़ा