` Printed Icetips Article

Icetips Article



Windows API: Creating shortcuts on the desktop
2001-08-01 -- Craig E Ransom
 
Newsgroups: comp.lang.clarion

Hi all.

I hope this is simple (though it seems not to be :) :

Using C5bPE how do I from within my homemade installation program create a
shortcut to my app on the users desktop?

Short questions should yield short answers, right? ;)


Hi Niels!

Short questions should yield short answers, right? ;)

Short answer. You can try this. It's all C/C++. :(

> http://msdn.microsoft.com/library/psdk/shellcc/shell/Shortcut.htm

-- Craig (The Data Ferret)
http://www.pcferret.com/ for RARS, NetClip
http://www.pcferret.com/teletools.html for Telephony
http://www.pcferret.com/gps.html for GPS!
Virtual Access 5.50 build 311 Win98
http://counter.li.org ID #184149
"Do not meddle in the affairs of FERRETS..."
Message 3 in thread
From: Alexey Solovjev (clarion@also.spb.ru)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-08 04:45:34 PST


PROGRAM

DWORD          EQUATE(LONG)
WORD           EQUATE(USHORT)
HRESULT        EQUATE(LONG)
HWND           EQUATE(UNSIGNED)
UINT           EQUATE(UNSIGNED)
OLESTRING      EQUATE(BSTRING)
!OLESTRING     EQUATE(CSTRING)

! OLE Types ====================================================================

GUID           GROUP,TYPE
Data1            DWORD
Data2            WORD
Data3            WORD
Data4            STRING(8)
               END

IID            GROUP(GUID),TYPE
               END

CLSID          GROUP(GUID),TYPE
               END

OBJECTID       GROUP(GUID),TYPE
Uniquifier       ULONG
               END

SHITEMID       GROUP,TYPE
cb               USHORT
ID               BYTE,DIM(1)
               END

ITEMIDLIST     GROUP,TYPE
mkid             LIKE(SHITEMID)
               END

               ITEMIZE,PRE(CLSCTX)
INPROC_SERVER    EQUATE(1)
INPROC_HANDLER   EQUATE(2)
LOCAL_SERVER     EQUATE(4)
INPROC_SERVER16  EQUATE(8)
               END

               ITEMIZE,PRE(CSIDL)
DESKTOP          EQUATE(0)
PROGRAMS         EQUATE(2)
CONTROLS         EQUATE(3)
Read the rest of this message... (331 more lines)

Message 4 in thread
From: Craig E Ransom (dataferret@pcferret.com)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-08 07:15:13 PST



Hi Alexey!

> See attachment. The plain CW code.
>
Ah-HAH! I THOUGHT I'd seen something like this but couldn't find the
message!

This is the part that needs to be modified, I guess, to set the
correct values:

>   ShortCutInfo.TargetFile  = 'W:\TESTS\_026\CALLOLE.EXE'
>   ShortCutInfo.IconName    = 'O:\NT4\COOL.DLL'
>   ShortCutInfo.IconIndex   = 17
>   ShortCutInfo.Description = 'Description for this program shortcut'
>   ShortCutInfo.HotKey      = 0
>   ShortCutInfo.StartIn     = 'W:\TESTS\_026\'
>   ShortCutInfo.ShortCut    = 'This Program.LNK<0>'
>

N.B. it will still behoove the developer to check out the link I
provided, to understand what each item is.

BTW, I noticed:

IOLE INTERFACE,COM

COM as an attribute for INTERFACE is not documented in either C5b or
C5.5, but I was able to compile this in C5b as well as C5.5. Does this
imply that INTERFACE with the COM attribute is native Clarion for
doing COM objects? Or does COM mean something else in this context?

Thanks again! (You are such a wonderful source of information!)

-- Craig (The Data Ferret)
http://www.pcferret.com/ for RARS, NetClip
http://www.pcferret.com/teletools.html for Telephony
http://www.pcferret.com/gps.html for GPS!
Virtual Access 5.50 build 311 Win98
http://counter.li.org ID #184149
"Do not meddle in the affairs of FERRETS..."
Message 5 in thread
From: Alexey Solovjev (clarion@also.spb.ru)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-08 07:59:37 PST


Hello,

> From: Craig E Ransom 
> Date: Mon, 08 Jan 2001 10:10:19 EST
> COM as an attribute for INTERFACE is not documented in either C5b or
> C5.5, but I was able to compile this in C5b as well as C5.5. Does this
> imply that INTERFACE with the COM attribute is native Clarion for
> doing COM objects? Or does COM mean something else in this context?

COM implies the PASCAL calling convention for all methods in the
INTERFACE.

Alexey Solovjev

E-mail:  clarion@also.spb.ru
Message 6 in thread
From: Randy Goodhew (rgoodhew@fuse.net)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-08 11:02:40 PST


Also:

What about the undocumented data types: BSTRING and VARIANT?
Do they now work as expected?

Many thanks...

Alexey Solovjev wrote:
>
> Hello,
>
> > From: Craig E Ransom 
> > Date: Mon, 08 Jan 2001 10:10:19 EST
> > COM as an attribute for INTERFACE is not documented in either C5b or
> > C5.5, but I was able to compile this in C5b as well as C5.5. Does this
> > imply that INTERFACE with the COM attribute is native Clarion for
> > doing COM objects? Or does COM mean something else in this context?
>
> COM implies the PASCAL calling convention for all methods in the
> INTERFACE.
>
> Alexey Solovjev
>
> E-mail:  clarion@also.spb.ru
--
 Randy Goodhew
 ---[ eQ ]---
Message 7 in thread
From: Niels H. K. Thomsen (NikoDemus@vip.cybercity.dk)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-09 03:18:34 PST


Could I see the rest of the code, please?

Feel free to send the source to me by e-mail, if this is preferred.

Thanks in advance. Best regards, Niels.

Craig E Ransom skrev i meddelelsen ...
>Hi Alexey!
>
>> See attachment. The plain CW code.
>>
>Ah-HAH! I THOUGHT I'd seen something like this but couldn't find the
>message!
>
>This is the part that needs to be modified, I guess, to set the
>correct values:
>
>>   ShortCutInfo.TargetFile  = 'W:\TESTS\_026\CALLOLE.EXE'
>>   ShortCutInfo.IconName    = 'O:\NT4\COOL.DLL'
>>   ShortCutInfo.IconIndex   = 17
>>   ShortCutInfo.Description = 'Description for this program shortcut'
>>   ShortCutInfo.HotKey      = 0
>>   ShortCutInfo.StartIn     = 'W:\TESTS\_026\'
>>   ShortCutInfo.ShortCut    = 'This Program.LNK<0>'
>>
>
>N.B. it will still behoove the developer to check out the link I
>provided, to understand what each item is.
>
>BTW, I noticed:
>
>IOLE INTERFACE,COM
>
>COM as an attribute for INTERFACE is not documented in either C5b or
>C5.5, but I was able to compile this in C5b as well as C5.5. Does this
>imply that INTERFACE with the COM attribute is native Clarion for
>doing COM objects? Or does COM mean something else in this context?
>
>Thanks again! (You are such a wonderful source of information!)
>
>-- Craig (The Data Ferret)
>http://www.pcferret.com/ for RARS, NetClip
>http://www.pcferret.com/teletools.html for Telephony
>http://www.pcferret.com/gps.html for GPS!
>Virtual Access 5.50 build 311 Win98
>http://counter.li.org ID #184149
>"Do not meddle in the affairs of FERRETS..."
>
Message 8 in thread
From: Craig E Ransom (dataferret@pcferret.com)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-09 06:34:33 PST


Hi Niels!

> Could I see the rest of the code, please?
>
> Feel free to send the source to me by e-mail, if this is preferred.
>
The rest of it is in Alexey's message in this thread dated 08 Jan
2001 15:43:55 +0300. As he contributed it, I do not feel comfortable
posting or emailing it without his express permission.

-- Craig (The Data Ferret)
http://www.pcferret.com/ for RARS, NetClip
http://www.pcferret.com/teletools.html for Telephony
http://www.pcferret.com/gps.html for GPS!
Virtual Access 5.50 build 311 Win98
http://counter.li.org ID #184149
"Do not meddle in the affairs of FERRETS..."
Message 9 in thread
From: Craig E Ransom (dataferret@pcferret.com)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-08 07:28:56 PST


Hi Alexey!

WOW! This little fellow works - in C5b!

Change these lines to put the Windows Calculator on your
desktop:

ShortCutInfo.TargetFile  = 'C:\WINDOWS\CALC.EXE'
ShortCutInfo.IconName    = 'C:\WINDOWS\CALC.EXE'
ShortCutInfo.IconIndex   = 0
ShortCutInfo.Description = 'Calculator, natch!'
ShortCutInfo.HotKey      = 0
ShortCutInfo.StartIn     = 'C:\WINDOWS'
ShortCutInfo.ShortCut    = 'Calculator.LNK<0>'

KEWEL!

-- Craig (The Data Ferret)
http://www.pcferret.com/ for RARS, NetClip
http://www.pcferret.com/teletools.html for Telephony
http://www.pcferret.com/gps.html for GPS!
Virtual Access 5.50 build 311 Win98
http://counter.li.org ID #184149
"Do not meddle in the affairs of FERRETS..."
Message 10 in thread
From: Craig E Ransom (dataferret@pcferret.com)
Subject: Re: Creating a shortcut programmatically.


View this article only
Newsgroups: comp.lang.clarion
Date: 2001-01-09 09:03:30 PST


Hi Alexey!

> See attachment. The plain CW code.
>
i have been looking at this and reading the Clarion documentation (such as it is)
I have a question concerning what is happening.

For instance, I understand what the IOLE portion does, I think.

However, to use one of the small ones:

> IPersist       INTERFACE(IOLE),COM
>
> GetClassID       PROCEDURE (*CLSID pClassID),HRESULT,RAW
>                END
>
I thought that INTERFACE required a Clarion CLASS with IMPLEMENTS(InterfaceName),
but I see no CLASS definition for IPersist, but I DO see the GetClassID which _is_
a method in the Microsoft Windows COM interface for their IPersist class. From the
Platform SDK entry: "The IPersist interface defines the single method GetClassID,
which is designed to supply the CLSID of an object that can be stored persistently
in the system."

Which is what you are doing.

Does INTERFACE therefore give us the capability of creating "Clarion INTERFACE" to
ANY such Windows Platform SDK class and its methods, without further definition?
Could I use this to access a third-party COM DLL that implements the IClassFactory
or IClassFactory2 interface, to create and manipulate objects for that COM DLL?

-- Craig (The Data Ferret)



Printed November 23, 2024, 3:34 am
This article has been viewed/printed 35273 times.
Google search has resulted in 851 hits on this article since January 25, 2004.