File: mklink2.c

package info (click to toggle)
xemacs21 21.4.22-11
  • links: PTS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 35,500 kB
  • sloc: ansic: 243,941; lisp: 94,068; sh: 7,491; cpp: 5,726; perl: 1,095; cs: 775; makefile: 758; python: 279; asm: 248; lex: 119; yacc: 95; sed: 22; csh: 9
file content (27 lines) | stat: -rw-r--r-- 736 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "win32.h"
#include "shlobj.h"

/* This part of the code must be in C because the C++ interface to COM
doesn't work. */

void
make_link_2 (char *exepath, char *args, char *icon, char *lname)
{
  IShellLink *sl;
  IPersistFile *pf;
  WCHAR widepath [_MAX_PATH];

  CoCreateInstance (&CLSID_ShellLink, NULL,
		    CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID *) & sl);
  sl->lpVtbl->QueryInterface (sl, &IID_IPersistFile, (void **) &pf);

  sl->lpVtbl->SetPath (sl, exepath);
  sl->lpVtbl->SetArguments (sl, args);
  sl->lpVtbl->SetIconLocation (sl, icon, 0);

  MultiByteToWideChar (CP_ACP, 0, lname, -1, widepath, _MAX_PATH);
  pf->lpVtbl->Save (pf, widepath, TRUE);

  pf->lpVtbl->Release (pf);
  sl->lpVtbl->Release (sl);
}