[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Disabling Menu Items in IE using Browser Helper Objects

Posted on 2002-05-25
11
Medium Priority
?
277 Views
Last Modified: 2008-02-26
Hi! I have developed a browser helper objects to block certain keyboard actions and the mouse actions on the browser. I want to disable some of the menu options like print, save, and stuff like that. I have implemented the IDocHostUIHandler Interface and has implemented hte ShowUI method as well. How do I proceed now....
0
Comment
Question by:salur
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +3
11 Comments
 
LVL 9

Accepted Solution

by:
BeyondWu earned 2000 total points
ID: 7036464
I think you can subclass the IE mainframe. Then you can catch WM_INITMENU or WM_INITMENUPOPUP, the these handler you can disable/enable the menu item.
0
 

Author Comment

by:salur
ID: 7036526
Thanks for your comment. Are you sure its going to work.
0
 
LVL 9

Expert Comment

by:BeyondWu
ID: 7037953
I'm not very sure:o( but you can try it:o)
Maybe you have implement the IObjectWithSite interface,
then you can get the hwnd handle of the ie in the setsite function.
IObjectWithSite::SetSite(IUnknown* punkSite)
{
    if(punkSite)
    {
      //Get the parent window.
      IOleWindow  *pOleWindow;
      m_hwndParent = NULL;  // this is hwnd of ie.
      if(SUCCEEDED(punkSite->QueryInterface(IID_IOleWindow, (LPVOID*)&pOleWindow)))
      {
         pOleWindow->GetWindow(&m_hwndParent);
         pOleWindow->Release();
      }
      // ...subclass it...
      g_oldWndProc = (WNDPROC)SetWindowLong(m_hwndParent, GWL_WNDPROC, (LPARAM)(WNDPROC)NewExplorerProc);
      // ...
}

You can try it.
Good Luck.
         
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Author Comment

by:salur
ID: 7038330
Hi! Thanks a lot for your comments. I shall try it out and get back to you in this regard.
0
 

Expert Comment

by:GregToombs
ID: 7056102
I tried experimenting myself, and found only one way to intercept the messages of the Internet Explorer window. If you provide me with your email address I will send you the source code I've written to disable or enable any menu in Internet Explorer.
My email address is gregtoombs@yahoo.com
Thanks, it's been an interesting learning experience.

-Greg
0
 

Author Comment

by:salur
ID: 7058870
Hi!,,

Beyondwu-----------I appreciate your efforts, thanks for the code snippet....I shall try it out...

GregToombs----I am eagerly waiting to see the source.....

THanks & Regards,
Sandy
0
 

Expert Comment

by:GregToombs
ID: 7060437
The method I used is a little bit complex, so I don't know if it'll suit your needs or not.
I first tried subclassing the IE window, as BeyondWu suggested, but then I found out that Windows doesn't support subclassing windows that aren't owned by the caller process.
I found out how to get the messages: using hooks. One has to write a .DLL containing a function similar in nature to WindowProc. Every time the external window receives a message, it goes through the hook in your DLL first.
Then, you need to write another program, a .EXE, that loads your DLL and associates its hook with IE.

What I think I'll do is, to make matters simpler for you, I'll write the DLL. It'll have a generic initialization function that asks for the target HWND and a callback function pointer to a standard WindowProc that -you- provide.

How about, for exports for the hook dll,

BOOL HookInitialize(HWND targWindow, WNDPROC messageCallback);

That's it.
When you unload the DLL the hook'll be destroyed as well.
Sound okay?
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 7137365
hi salur, are you still looking for a solution to this problem? -- Dan
0
 
LVL 11

Expert Comment

by:griessh
ID: 7260197
Dear salur

I think you forgot this question. I will ask Community Support to close it unless you finalize it within 7 days. You can always request to keep this question open. But remember, experts can only help you if you provide feedback to their questions.
Unless there is objection or further activity,  I will suggest to accept

     "BeyondWu"

comment(s) as an answer.
     "refund the points and delete this question"
since nobody had a satisfying answer for you.
since you never gave more feedback.
PAQ at zero points.

PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
======
Werner
0
 
LVL 6

Expert Comment

by:Mindphaser
ID: 7332848
Force accepted

** Mindphaser - Community Support Moderator **
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question