162 lines
3.6 KiB
C
162 lines
3.6 KiB
C
/*
|
|
* OleView (main.h)
|
|
*
|
|
* Copyright 2006 Piotr Caban
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#define COBJMACROS
|
|
|
|
#include <windows.h>
|
|
#include <winreg.h>
|
|
#include <commctrl.h>
|
|
#include <unknwn.h>
|
|
|
|
#ifdef NONAMELESSUNION
|
|
# define U(x) (x).u
|
|
#else
|
|
# define U(x) (x)
|
|
#endif
|
|
|
|
#include "resource.h"
|
|
|
|
#define MAX_LOAD_STRING 256
|
|
#define MAX_WINDOW_WIDTH 30000
|
|
#define MIN_FUNC_ID 0x60000000
|
|
#define MIN_VAR_ID 0x40000000
|
|
#define TAB_SIZE 4
|
|
|
|
#define STATUS_WINDOW 2000
|
|
#define TREE_WINDOW 2001
|
|
#define TAB_WINDOW 2002
|
|
#define TYPELIB_TREE 2003
|
|
|
|
/*ItemInfo flags */
|
|
#define REGTOP 1
|
|
#define REGPATH 2
|
|
#define SHOWALL 4
|
|
#define INTERFACE 8
|
|
|
|
typedef struct
|
|
{
|
|
HWND hMainWnd;
|
|
HWND hPaneWnd;
|
|
HWND hStatusBar;
|
|
HWND hToolBar;
|
|
HWND hTree;
|
|
HWND hDetails;
|
|
HWND hTypeLibWnd;
|
|
HINSTANCE hMainInst;
|
|
BOOL bExpert;
|
|
DWORD dwClsCtx;
|
|
WCHAR wszMachineName[MAX_LOAD_STRING];
|
|
}GLOBALS;
|
|
|
|
typedef struct
|
|
{
|
|
HWND left;
|
|
HWND right;
|
|
INT pos;
|
|
INT size;
|
|
INT width;
|
|
INT height;
|
|
INT last;
|
|
}PANE;
|
|
|
|
typedef struct
|
|
{
|
|
/* Main TreeView entries: */
|
|
HTREEITEM hOC; /* Object Classes */
|
|
HTREEITEM hGBCC; /* Grouped by Component Category */
|
|
HTREEITEM hO1O; /* OLE 1.0 Objects */
|
|
HTREEITEM hCLO; /* COM Library Objects */
|
|
HTREEITEM hAO; /* All Objects */
|
|
HTREEITEM hAID; /* Application IDs */
|
|
HTREEITEM hTL; /* Type Libraries */
|
|
HTREEITEM hI; /* Interfaces */
|
|
}TREE;
|
|
|
|
typedef struct
|
|
{
|
|
CHAR cFlag;
|
|
WCHAR info[MAX_LOAD_STRING];
|
|
WCHAR clsid[MAX_LOAD_STRING];
|
|
WCHAR path[MAX_LOAD_STRING];
|
|
BOOL loaded;
|
|
IUnknown *pU;
|
|
}ITEM_INFO;
|
|
|
|
typedef struct
|
|
{
|
|
HWND hStatic;
|
|
HWND hTab;
|
|
HWND hReg;
|
|
}DETAILS;
|
|
|
|
typedef struct
|
|
{
|
|
HWND hPaneWnd;
|
|
HWND hTree;
|
|
HWND hEdit;
|
|
HWND hStatusBar;
|
|
WCHAR wszFileName[MAX_LOAD_STRING];
|
|
}TYPELIB;
|
|
|
|
typedef struct
|
|
{
|
|
WCHAR *idl;
|
|
WCHAR wszInsertAfter[MAX_LOAD_STRING];
|
|
INT idlLen;
|
|
BOOL bPredefine;
|
|
BOOL bHide;
|
|
}TYPELIB_DATA;
|
|
|
|
extern GLOBALS globals;
|
|
extern TREE tree;
|
|
extern TYPELIB typelib;
|
|
|
|
/* Predefinitions: */
|
|
/* details.c */
|
|
HWND CreateDetailsWindow(HINSTANCE hInst);
|
|
void RefreshDetails(HTREEITEM item);
|
|
|
|
/* oleview.c */
|
|
void RefreshMenu(HTREEITEM item);
|
|
|
|
/* pane.c */
|
|
BOOL CreatePanedWindow(HWND hWnd, HWND *hWndCreated, HINSTANCE hInst);
|
|
BOOL PaneRegisterClassW(void);
|
|
void SetLeft(HWND hParent, HWND hWnd);
|
|
void SetRight(HWND hParent, HWND hWnd);
|
|
|
|
/* tree.c */
|
|
void EmptyTree(void);
|
|
void AddTreeEx(void);
|
|
void AddTree(void);
|
|
HWND CreateTreeWindow(HINSTANCE hInst);
|
|
BOOL CreateRegPath(HTREEITEM item, WCHAR *buffer, int bufSize);
|
|
void CreateInst(HTREEITEM item, WCHAR *wszMachineName);
|
|
void ReleaseInst(HTREEITEM item);
|
|
|
|
/* typelib.c */
|
|
BOOL CreateTypeLibWindow(HINSTANCE hInst, WCHAR *wszFileName);
|
|
BOOL TypeLibRegisterClassW(void);
|
|
void UpdateData(HTREEITEM item);
|
|
|
|
/* interface.c */
|
|
BOOL IsInterface(HTREEITEM item);
|
|
void InterfaceViewer(HTREEITEM item);
|