none
請問如何達成將視窗崁入到桌面中 RRS feed

  • 問題

  • 有一套軟體 KMPlayer,是一套電影檔案的播放程式
    其中有一種播放模式(桌面模式)是可以直接坎入到桌面上,
    該程式變成無法接收接收鍵盤、滑鼠的訊息,
    但仍可以繼續放映影片!
    不知道這樣表示不知道大家了不了解?

    不知道此種效果是如何達成的呢?
    如果用VB.NET又該如何達成呢?
    謝謝!!

    2006年11月8日 上午 09:31

解答

  • 不知道他用哪種,不過還是能接受鍵盤、滑鼠訊息,只是要不要回應而已。

    1. 把 GetDesktopWindow 設為父視窗

    2. 將元件崁入 html ,桌布使用 html 桌布。我自己有個寫個動態桌布換照片的,就是這樣做。

    2006年11月8日 上午 11:32
    版主

所有回覆

  • 不知道他用哪種,不過還是能接受鍵盤、滑鼠訊息,只是要不要回應而已。

    1. 把 GetDesktopWindow 設為父視窗

    2. 將元件崁入 html ,桌布使用 html 桌布。我自己有個寫個動態桌布換照片的,就是這樣做。

    2006年11月8日 上午 11:32
    版主
  • 不過桌面上的圖示可以覆蓋在上面!
    GetDesktopWindow 設為父視窗 的方式可以達成這樣嗎?

    謝謝!!

    ====================
    剛剛有試了一下...
    Form 的 Parent 屬性是 System.Windows.Forms.Control
    但是 GetDesktopWindow 的回傳值是 LONG
    該如何轉換呢?

    謝謝~

    2006年11月9日 上午 06:37
  • Long 是 VB6 啦,VBNET 是 Integer 。

    要設定父視窗可用 SetParent 這個 API 。

    HTML 桌布設為全螢幕、固定位置,圖示也會在內容之上。

    另外,影片播放的程式考慮到播放效能及時間精確性,可能會透過 DirectX 直接輸出,避免使用 GDI 函數,細節可能要看看該軟體的表現或用 Spy 之類的軟體觀察,才知道到底它是怎樣搞。

    2006年11月9日 上午 07:37
    版主
  • 呵呵~先謝謝您熱心的解答!
    我只是想說試試看那種方式在VB.NET中是否可以達成! ^^"

    不過,在.NET中似乎找不到設定或取得 WHND 的功能ㄝ!@@
    如果使用 SetParent 這個API的話,我該如何取得視窗的Handle值呢?
    (我有試過用 Me.Parent 去指定 父視窗 但好像不行,型別不符,也不知道如何轉換...)

    另外,有一些參數對應VB6與.NET似乎不一樣~
    像VB6中的 Any 是否是對應到 Object 呢?
    在MSDN或是其他地方有完正變更的對應資訊嗎?

    在一次的感謝您 m(_ _)m ~

    ------------
    補充: 不好意思,不知道您能否提供範例呢?謝謝~

    補充2:剛剛有試了一下,不過 SetParent 這個API好像沒有什麼效果@@
     底下我有附上原始碼,不知道這樣寫對嗎?

    2006年11月10日 上午 04:12
  • 在 VBNET 習慣用 IntPtr 取代 Integer ,看一下線上說明,就知道 Handle 的型別了。

    我前面不是說過了嗎?我直接用 html 設為桌布~

    如果你是要看在 VBNET 如何取得 hWnd ,這邊有一個:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=25&Function=203

    這段原始碼內有宣告好呼叫 GetDesktopWindow

    應用在:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=25&Function=202

    2006年11月10日 上午 05:23
    版主