view netinstall/mklink2.c @ 4854:95c4ced5c07c

fix compile problems -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-01-14 Ben Wing <ben@xemacs.org> * glyphs-eimage.c: Turn on fixes for conflicts between jmorecfg.h and windows.h on Cygwin, too. * emacs.c (debug_can_access_memory): * lisp.h: Declare function const void * to avoid warnings. * sysfile.h: Include syswindows.h on Windows to avoid problems using things like PATHNAME_CONVERT_OUT. * sysfile.h (X_OK): * dialog-msw.c (handle_directory_proc): * dialog-msw.c (handle_directory_dialog_box): * nt.c (Fmswindows_short_file_name): * sysdep.c (qxe_allocating_getcwd): * syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR): * unexcw.c (unexec): * unexnt.c (_start): * win32.c (mswindows_read_link_1): Rename PATH_MAX_EXTERNAL to PATH_MAX_TSTR to reflect its actual semantics. * unexcw.c: Remove include of syswindows.h that had been added because sysfile.h didn't include it.
author Ben Wing <ben@xemacs.org>
date Thu, 14 Jan 2010 01:25:16 -0600
parents 3078fd1074e8
children
line wrap: on
line source

#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);
}