Announcement

Collapse
No announcement yet.

A question about GUID numbers as seen in this code

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dave Biggs
    replied
    FindIEinReg() in the code referenced in Msg#1 above isn't actually using Com services or anything oop like - it's just taking advantage of the info that is stored in the system registry for applications, like Internet Explorer, that support Com Interfaces.

    How'd anyone even know that was there?!? Let alone to search it with the COM browser?
    Apart from manually searching the registry or Com Browser, another way to find out details for all registered Com Components is to use RegDllView. It is a free utility that displays a list of registered dll/ocx/exe files and related data including CLSIDs, Program names and filepaths. There are a lot, > 1000 on my PC, but the list is searchable http://www.nirsoft.net

    Ah! Here's one of those basic knowledge items! That a CLSID is "created for a particular application when it's first developed"... I didn't have a clue..
    Then also, Logic would have me conclude that I should be generating a CLSID for each of the apps I develop, too?..
    I guess that would depend upon how 'classy' your apps need to be!!

    Seriously, I think that you will only need to generate GUID /CLSIDs for your apps when you start to write Com Components.

    Some notes mostly cut from PB's help files that might help clarify:
    A COM Component is generally known as a COM SERVER, because it serves up information or actions requested by a COM CLIENT. A COM SERVER is a special form of code library (embedded in a dll/ocx/exe file) that conforms to the COM specification. It provides at least one public interface, and is identified by a globally unique CLSID so that it's Methods and Properties can be made public and a COM CLIENT can call them as needed.

    It's own CLSID identifier is stored in the Windows Registry for each COM Component when it is installed and registered. (e.g. by calling, regsvr32.exe "MyComServer.dll"). Additional info is stored along with the CLSID - including a key called "LocalServer32", which holds the actual path\filename of the server application.

    Leave a comment:


  • John Montenigro
    replied
    Originally posted by Michael Mattias View Post
    > I reserve the right to come back and ask you for details on the WHAT and HOW

    Generic 'ADO' Connection and Query Tester (CC 5+/Win 9+) 11-02-08

    MCM
    I've marked this for follow-up when I start my COM education. Thanks for the reference and the code.

    I still reserve the right to ask more questions!!

    Leave a comment:


  • John Montenigro
    replied
    Originally posted by Dave Biggs View Post
    Good question - I've been trying to back track..!
    ...
    Using Com Browser you'd have to look in the "Microsoft Internet Controls 1.1" Registered Library - filename 'shdocvw.dll' or 'ieframe.dll' - depending what version IE you have installed
    How'd anyone even know that was there?!? Let alone to search it with the COM browser? It would appear I am missing some basic knowledge. (Wow, was that ever stating the obvious!)

    I figured, "OK if this CLSID thingy is a unique id created for a particular application when it's first developed...
    Ah! Here's one of those basic knowledge items! That a CLSID is "created for a particular application when it's first developed"... I didn't have a clue.

    Then also, Logic would have me conclude that I should be generating a CLSID for each of the apps I develop, too? Didn't know that before. So, after I generate it, what do I need to do with it? Who's expecting to be able to see it, and where should I store it? What will other apps use it for? Is there a protocol to follow?


    Good luck with the COM thing!
    I'll start focusing on COM next month. I really can't afford to start learning it now; I have 2 other projects nearing completion. But I'm starting to make a list of the questions I'll need answers to... And thanks, I'll need all the good wishes and support!

    Leave a comment:


  • Michael Mattias
    replied
    > I reserve the right to come back and ask you for details on the WHAT and HOW

    Generic 'ADO' Connection and Query Tester (CC 5+/Win 9+) 11-02-08

    MCM

    Leave a comment:


  • Dave Biggs
    replied
    How did Dave know that this GUID would get him the IE entries? If I had to create a similar routine, how would I know what GUID would return a specific entry?
    Good question - I've been trying to back track..!

    I'm sure that I started off with the example code from Pierre Bellisle http://www.powerbasic.com/support/pb...64&postcount=6
    That was about finding the path for WordPad from it's registry entry. I probably then searched my own registry HKEY_CLASSES_ROOT for iexplore.exe to find the CLSID.
    However, around that time I was also playing with the WebBrowser.inc file from the PBWin90 samples and the CLSID for internet explorer can be found there in a couple of places too.

    Using Com Browser you'd have to look in the "Microsoft Internet Controls 1.1" Registered Library - filename 'shdocvw.dll' or 'ieframe.dll' - depending what version IE you have installed

    I figured, "OK if this CLSID thingy is a unique id created for a particular application when it's first developed then there would have to be list of existing ids readily available
    for the Microsoft apps somewhere, right"?
    I've done a bit of googling without too much success. The best I've found so far is here http://www.windowsitlibrary.com/Content/368/13/1.html#3
    If Microsoft maintain a public list I have been looking in the wrong places to date..

    Good luck with the COM thing!

    Leave a comment:


  • Cliff Nichols
    replied
    Personally depending on your background
    "Take the Neastea Plunge"

    Might be cold at first, but could save you a ton of time wading in the shallow end

    (ok so I spent toooo much time in the shallow end) Thank god for PB

    and yes I am still learning to plunge into COM myself

    Leave a comment:


  • John Montenigro
    replied
    I appreciate the direction, Michael, and I reserve the right to come back and ask you for details on the WHAT and HOW... (like which ADO library, how is it a bridge to COM, etc. (Can't get into it now; am signing off for the night.)

    Leave a comment:


  • Michael Mattias
    replied
    >I'm going to have to take the COM plunge eventually, eh?

    Do what I am doing. I am USING a library (ADO) to get the feel for the syntax.

    When I get the urge to create a COM component, at least I won't be starting "cold."

    MCM

    Leave a comment:


  • John Montenigro
    replied
    {with the eyes rolling and voice of Lou Costello} Hoy, boy! {slaps side of face}

    Seems the more questions I ask, the deeper I get... I'm going to have to take the COM plunge eventually, eh?

    Leave a comment:


  • jcfuller
    replied
    Com Browser!

    James

    Leave a comment:


  • A question about GUID numbers as seen in this code

    In message #4 of this thread: http://www.powerbasic.com/support/pb...ad.php?t=39228

    Dave Biggs posted the following code (and more). (I added the Bold Underline for emphasis and focus in this message.)

    Code:
    Function FindIEinReg()As String
     Local hKey   As Dword
     Local zData1 As Asciiz * %MAX_PATH
     Local zData2 As Asciiz * %MAX_PATH
     Local sTest, sTest2 As String
                                            'Test Registry entry for IExplore..
     If RegOpenKeyEx(%HKEY_CLASSES_ROOT,"CLSID\[B][U]{0002DF01-0000-0000-C000-000000000046}[/U][/B]\LocalServer32", _
                     ByVal %Null, %KEY_READ, hKey) = %ERROR_SUCCESS  Then
    
       RegQueryValueEx hKey, "", ByVal %Null, ByVal %Null, ByVal VarPtr(zData1), %MAX_PATH
       RegCloseKey hKey
       ExpandEnvironmentStrings ByVal VarPtr(zData1), ByVal VarPtr(zData2), %MAX_PATH
     End If
      Function = zData2
    End Function
    '------------------/FindIEinReg
    My question pertains specifically to the GUID number in the IF:

    How did Dave know that this GUID would get him the IE entries? If I had to create a similar routine, how would I know what GUID would return a specific entry?
Working...
X