2014-02-10 2 views
3

나는 프로그램이 코드를 사용하여 시스템 트레이에 DeskBand 개체를 추가하려고 해요를 추가 할 때 :오류 프로그래밍 DeskBand

[ComImport, Guid("6D67E846-5B9C-4db8-9CBC-DDE12F4254F1"), 
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
public interface ITrayDeskband 
{ 
    [PreserveSig] 
    int ShowDeskBand([In, MarshalAs(UnmanagedType.Struct)] ref Guid clsid); 
    [PreserveSig] 
    int HideDeskBand([In, MarshalAs(UnmanagedType.Struct)] ref Guid clsid); 
    [PreserveSig] 
    int IsDeskBandShown([In, MarshalAs(UnmanagedType.Struct)] ref Guid clsid); 
    [PreserveSig] 
    int DeskBandRegistrationChanged(); 
} 

private void ShowDeskBand() 
{ 
    ITrayDeskband obj = null; 
    Type trayDeskbandType = System.Type.GetTypeFromCLSID(new Guid("E6442437-6C68-4f52-94DD-2CFED267EFB9")); 
    try 
    { 
     Guid deskbandGuid = new Guid("FE0829F8-EDFA-46B6-87E0-636C8D953E33"); // My Deskband | TestToolbar 

     obj = (ITrayDeskband)Activator.CreateInstance(trayDeskbandType); 
     obj.DeskBandRegistrationChanged(); 

     int hr = obj.ShowDeskBand(ref deskbandGuid); 

     if (hr != 0) 
     { 
      throw new Exception("Error while trying to show deskband: " + hr); 
     } 

     obj.DeskBandRegistrationChanged(); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(e.Message); 
    } 
    finally 
    { 
     if (obj != null && Marshal.IsComObject(obj)) 
      Marshal.ReleaseComObject(obj); 
    } 
} 

출처 : http://www.pinvoke.net/default.aspx/Interfaces/ITrayDeskband.html 내 DeskBand 객체는 "BandObjectsLib에서 만든

"이 샘플에서 : http://www.codeproject.com/Articles/14141/Band-Objects-NET-2-0-Redux

은 다음과 같습니다

[Guid("FE0829F8-EDFA-46B6-87E0-636C8D953E33")] 
[BandObject("TestToolbar", BandObjectStyle.Horizontal | BandObjectStyle.TaskbarToolBar, HelpText = "Testing this toolbar")] 
public class TestToolbar : BandObject 
{ 
    public TestToolbar() 
    { 
     ProgressBar pb = new ProgressBar(); 
     pb.Maximum = 100; 
     pb.Minimum = 0; 
     pb.Value = 50; 

     this.Controls.AddRange(new System.Windows.Forms.Control[] { pb }); 
    } 
} 

그러나, DeskBand 개체를 추가하려고 할 때 내가 얻을 모두가 나에게 오류 코드를 말하는 내 예외 : -2147467259 이 오류 코드는 0X80004005로 변환하고 MSDN에 따라 E_FAIL입니다 : 나는 'http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137.aspx

이것이 솔직히 내 전문 분야가 아니기 때문에 기본적으로 여기에서 붙어 있습니다. 나는 경험이 풍부하고 나를 도울 수있는 누군가가 있기를 바라고 있었습니까? 미리 감사드립니다!

답변

0

코드를 작동 시키려면 DLL을 등록해야합니다 (MSI를 설치하거나 regasm을 사용해야 함).