當前位置:首頁 » 網頁前端 » webhicon
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

webhicon

發布時間: 2022-08-02 01:24:49

① MFC樹形控制項不能顯示圖標

您好,這樣:創建樹的時候,為可選擇的項設置一個值HTREEITEMTT=mTree.InsertItem("我的神吶",);mTree.SetItemData(HH,100);用的時候HTREEITEMhti=GetSelectedItem();intSel=mTree.GetItemData(hti);switch(Sel){case100:AfxMessageBox("我的神吶");break;}

② VB製作瀏覽器

我暈 這個你說得輕松 做起來可是大工程啊

Private Sub Form_Load() '窗體載入事件
'**********************************

If App.PrevInstance = True Then '判斷是否已有實例在運行 是則退出
'MsgBox ("關機精靈已經運行了,請不要重復執行!"), vbOKOnly + vbExclamation + vbMsgBoxSetForeground, "提示!"
End
End If

'=======調用托盤圖標方法
AddToTray Me
SetTrayTip "單擊顯示/隱藏窗體" & vbNullChar
End Sub

Private Sub Form_Resize()
If Me.WindowState = 1 Then
Me.Visible = Not Me.Visible
End If
End Sub

Private Sub Form_Unload(Cancel As Integer) '窗體卸載事件
RemoveFromTray
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '***********************
Select Case CLng(X)
Case WM_RBUTTONUP '滑鼠在圖標上右擊時彈出菜單
'Me.PopupMenu mnuTray
Case WM_LBUTTONUP '滑鼠在圖標上左擊時窗口若最小化則恢復窗口位置
Me.Visible = Not Me.Visible
End Select
End Sub

給一個bas模塊給你

Option Explicit
'本模塊是載入系統托盤用
'函數調用如下
'Public Sub AddToTray(frm As Form)添加托盤SetTrayTip
'Public Sub RemoveFromTray()刪除托盤
'Public Sub SetTrayTip(tip As String)提示信息修改
'Public Sub SetTrayIcon(pic As Picture)修改圖標

Public OldWindowProc As Long
Public TheForm As Form
Public TheMenu As Menu
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Const WM_USER = &H400
Public Const WM_LBUTTONUP = &H202
Public Const WM_MBUTTONUP = &H208
Public Const WM_RBUTTONUP = &H205
Public Const TRAY_CALLBACK = (WM_USER + 1001&)
Public Const GWL_WNDPROC = (-4)
Public Const GWL_USERDATA = (-21)
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIF_MESSAGE = &H1
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
Uid As Long
UFlags As Long
UCallbackMessage As Long
HIcon As Long
SzTip As String * 64
End Type
Private TheData As NOTIFYICONDATA

Public Function NewWindowProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = TRAY_CALLBACK Then
If lParam = WM_LBUTTONUP Then
If TheForm.WindowState = 1 Then: TheForm.WindowState = 2: TheForm.Show: Exit Function
If TheForm.WindowState = 0 Or TheForm.WindowState = 2 Then TheForm.WindowState = 1
End If
End If
NewWindowProc = CallWindowProc(OldWindowProc, hwnd, Msg, wParam, lParam)
End Function
Public Sub AddToTray(frm As Form)
Set TheForm = frm
'Set TheMenu = mnu
OldWindowProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
With TheData
.Uid = 0 '忘了嗎?參考一下前面內容,Uid圖標的序號,做動畫圖標有用
.hwnd = frm.hwnd
.HIcon = frm.Icon.Handle
.UFlags = NIF_ICON '指明要對圖標進行設置
.UCallbackMessage = TRAY_CALLBACK
.UFlags = .UFlags Or NIF_MESSAGE '指明要設置圖標或返回信息給主窗體,此句不能省去
.cbSize = Len(TheData) '為什麼呢?我們需要在添加圖標的同時,讓其返回信息
End With '給主窗體,Or的意思是同時進行設置和返回消息
Shell_NotifyIcon NIM_ADD, TheData '根據前面定義NIM_ADD,設置為「添加模式」
End Sub
Public Sub RemoveFromTray()
With TheData
.UFlags = 0
End With
Shell_NotifyIcon NIM_DELETE, TheData '根據前面定義NIM_DELETE,設置為「刪除模式」
SetWindowLong TheForm.hwnd, GWL_WNDPROC, OldWindowProc
End Sub
Public Sub SetTrayTip(tip As String)
With TheData
.SzTip = tip & vbNullChar
.UFlags = NIF_TIP '指明要對浮動提示進行設置
End With
Shell_NotifyIcon NIM_MODIFY, TheData '根據前面定義NIM_MODIFY,設置為「修改模式」
End Sub
Public Sub SetTrayIcon(pic As Picture)
If pic.Type <> vbPicTypeIcon Then Exit Sub
With TheData
.HIcon = pic.Handle
.UFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, TheData
End Sub

③ C# 如何打開一個文件的屬性窗口,還有如何打開WebBrowser控制項載入的網頁的屬性。

WebBrowser的網頁屬性對框很簡單。
webBrowser1.ShowPropertiesDialog();
就可以了。

文件的windows屬性對話框比較麻煩,建議直接自己寫窗體,讀出各項屬性。
如果要調用windows的,方法如下:

1、引用命名空間
using System.Runtime.InteropServices;

2、定義一個Struct,用於傳遞參數
[StructLayout(LayoutKind.Sequential)]
public struct SHELLEXECUTEINFO
{
public int cbSize;
public uint fMask;
public IntPtr hwnd;
[MarshalAs(UnmanagedType.LPStr)]
public string lpVerb;
[MarshalAs(UnmanagedType.LPStr)]
public string lpFile;
[MarshalAs(UnmanagedType.LPStr)]
public string lpParameters;
[MarshalAs(UnmanagedType.LPStr)]
public string lpDirectory;
public int nShow;
public IntPtr hInstApp;
public IntPtr lpIDList;
[MarshalAs(UnmanagedType.LPStr)]
public string lpClass;
public IntPtr hkeyClass;
public uint dwHotKey;
public IntPtr hIcon;
public IntPtr hProcess;
}

3、導入Windows API函數和一些常量
private const int SW_SHOW = 5;
private const uint SEE_MASK_INVOKEIDLIST = 12;

[DllImport("shell32.dll")]
static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);

4、寫調用查看文件屬性的對話框
public static void ShowFileProperties(string Filename)
{
SHELLEXECUTEINFO info = new SHELLEXECUTEINFO();
info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info);
info.lpVerb = "properties";
info.lpFile = Filename;
info.nShow = SW_SHOW;
info.fMask = SEE_MASK_INVOKEIDLIST;
ShellExecuteEx(ref info);
}

這樣就能通過ShowFileProperties("xxxx")來調用查看文件對話框了。

④ 如何對webbrowser和IE編程(六)求解答

無論你使用MFC, ATL, 或者標准 C++自動化IE,方法都是一樣—你使用COM API來實現.VC++中創建一個Internet Explorer實例包括要調用COM API CoCreateInstance ,指定第一個參數為 CLSID_InternetExplorer 。創建IE自動化實例不像創建包含webbrowser的Activex控制項困難。你不需要實現容器或者site對象的必要介面。來看看如何容易的使用CoCreateInstance 創建IE實例吧。啟動Visual C++, 新建MFC AppWizard (exe) 應用程序命名為 MfcAutoIE.選擇dialog-based option, 認可其他預設選項.現在加入如VbAutoIE中的控制項到表單.對話框看起來如 6-21. 分派ID到對話框的各個控制項。 確信控制項TAB次序如 Figure 6-22. (tab 次序影響到radio按鈕的工作)
Figure 6-21.MfcAutoIE dialog.Figure 6-22.MfcAutoIE dialog tab order.現在用右鍵菜單設置每一個隱藏radio按鈕的Group ,屬性設置如表 6-9.Table 6-9.Member Variables for MfcAutoIE Dialog ControlsControlTypeMember VariableHide radio button for AddressBarintm_nAddressBarEdit boxCStringm_strStatusTextHide radio button for MenuBarintm_nMenuBarHide radio button for StatusBarintm_nStatusBarHide radio button for ToolBarintm_nToolBar我們使用ClassWizard 為表 6-9 中的控制項建立變數時,他們自動加入到 CMfcAutoIEDlg. 成員變數設置為-1. 編譯MfcAutoIE Example之前我們設置編譯的Directory次序屬性編譯之前,你需要處理一些重要任務:1. 確信你已經從MSDN中下載IE5的頭文件和庫文件。2.在Tools/Options 菜單的Directories頁, 確信lib路徑中包含Internet Explorer 5 和 Windows 2000庫文件.載列表中。3.配置Include:略 現在我們加入代碼使之工作。 首先你應當包含ExDisp.h到你的對話框頭文件—MfcAutoIEDlg.h. ExDisp.h 是包含了WebBrowser介面和類ID的頭文件.確信你已經從MSDN下載了最新的版本。建立一個private 或者protected 的數據類型,指向IWebBrowser2 的指針, 命名為 m_pInetExplorer. 如下protected: IWebBrowser2* m_pInetExplorer;現在在構造函數中初始化m_pInetExplorer 為NULL 。你必須也初始化COM. 放置一個CoInitialize 的COM API調用在構造函數。構造函數看起來應當如下: CMfcAutoIEDlg::CMfcAutoIEDlg(CWnd* pParent /*=NULL*/) : CDialog(CMfcAutoIEDlg::IDD, pParent), m_pInetExplorer(NULL){ //{{AFX_DATA_INIT(CMfcAutoIEDlg) m_strStatusText = _T(""); m_nAddressBar = -1; m_nMenuBar = -1; m_nStatusBar = -1; m_nToolBar = -1; //}}AFX_DATA_INIT //Note that LoadIcon does not require a subsequent DestroyIcon //in Win32. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
// Initialize COM CoInitialize(NULL);}建立一個析構函數,以便調用CoUninitialize API 函數用以反初始化 COM. 此處的析構函數:CMfcAutoIEDlg::~CMfcAutoIEDlg(){ // Uninitialize COM. // CoUninitialize();}在預備工作之後, 讓我們開始實現具體的控制。首先為Start IE5 按鈕建立一個消息循環. 通常,你可以使用ClassWizard建立消息循環處理句柄. 在此消息句柄, 採用 CoCreateInstance API 建立一個IE實例。 此處初建的Internet Explorer實例初始化為隱藏, 所以你必須使用Visible屬性使他可見。為了導航到用戶的主頁,使用GoHome 方法。此處為消息處理句柄代碼:void CMfcAutoIEDlg::OnStartIE5() { // If an instance of Internet Explorer has // not already been created, create one. // This instance will initially be hidden, // so make it visible by using the Visible // property. Also, navigate to the user's // home page by using the GoHome method. // if (m_pInetExplorer) MessageBox (_T("Only one instance of Internet Explorer is allowed.")); else { HRESULT hr; hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowser2, (LPVOID*)&m_pInetExplorer);
if (SUCCEEDED(hr)) { // Set the radio buttons to their correct values. SetRadioButtons();
m_pInetExplorer->put_Visible(VARIANT_TRUE); m_pInetExplorer->GoHome(); } }}在此代碼中,我們首先檢查是否IE的上一個實例已經建立。如果已經建立,將會顯示一個錯誤消息框。(你僅僅能夠啟動一個IE的實例,隨後你將可以看到如何檢測IE窗口被關閉以便重置IE的數據成員。)如果一個IE的實例還未創建, CoCreateInstance 將CLSID_InternetExplorer 作為第一個參數被調用. (此類 ID 定義於ExDisp.h ,為Internet Explorer的唯一標示符.)第二個參數我們設定為NULL ,因為我們不希望此COM對象被聚合(be aggregated). 我們希望IE運行在一個單獨的進程空間,所以我們指定第三個參數為特殊值 CLSCTX_SERVER .我們利用第四個參數指示哪一個介面我們將通過CoCreateInstance 調用創建一個COM對象後被創建。在此例中,我們將一直希望獲得IWebBrowser2, 所以我們指定IID_IWebBrowser2 為第四個參數值。最後我們傳送存儲介面指針的變數. 對於此參數,你必須採用void類型傳遞一個指針的地址 (確信你傳送的指針指向一個介面類型。)如果一個IE實例成功創建,名為SetRadioButtons 的成員變數被創建。這是一個protected 成員函數,檢查當前地址欄、菜單條、工具條和狀態條等的狀態 ,用來設置radio 按鈕組的狀態。.為檢查每一個的狀態我們簡單的獲取屬性關聯的當前值 。C++ 應用中使用COM 沒有包裝類, 屬性被引用為使用 get_ and put_ 方法.為檢取每一個用戶問題的狀態,我們簡單的調用每一個關聯的(UI)項目的get_ 方法.除了 get_ToolBar外其他get_方法返回指向VARIANT_BOOL 數據類型,返回值指示用戶介面是否可見或者隱藏。如果用戶介面元素可見,將返回VARIANT_TRUE 。如果該項目是隱藏的,將返回VARIANT_FALSE 。這些值區別於TRUE 和FALSE 的用法.提醒當在Visual C++涉及VARIANT_BOOL , 你必須使用VARIANT_TRUE 或者VARIANT_FALSE 代替TRUE or FALSE. VARIANT_TRUE定義值0xffff, 而TRUE定義為1. 如果你比較VARIANT_TRUE 和TRUE, 你將發現在Vb中不匹配,你可以在涉及到VARIANT_BOOL. 使用true和false是由於VB替你實現了轉換。get_ToolBar 方法不同於其他屬性,因為它指向一個整型指針,所以我們如果發現返回非0,工具條可見。如果整型值是0,工具條將隱藏: 提醒如果一個屬性只讀, put_將不會出現。同樣,如果一個屬性只寫,將不會出現get_方法。此處為 SetRadioButtons 方法的代碼:void CMfcAutoIEDlg::SetRadioButtons(){ VARIANT_BOOL vtBool = VARIANT_TRUE;
// Get the current state of the AddressBar. // m_pInetExplorer->get_AddressBar(&vtBool); m_nAddressBar = (vtBool == VARIANT_TRUE) ? 1 : 0;
// Get the current state of the MenuBar. // m_pInetExplorer->get_MenuBar(&vtBool); m_nMenuBar = (vtBool == VARIANT_TRUE) ? 1 : 0;
// Get the current state of the StatusBar. // m_pInetExplorer->get_StatusBar(&vtBool); m_nStatusBar = (vtBool == VARIANT_TRUE) ? 1 : 0;

⑤ 如何進行網頁元素的層次結構識別與信息抽取

如果用C++.net的話,System::Windows::Forms::WebBrowser這個類能容易地實現.