Ga naar inhoud

[VB][Visual C++] code om een snelkoppeling te maken


Aanbevolen berichten

Als ik je vraag snap heeft het weinig met programmeren te maken. En anders snap ik je vraag niet. Rechts klikken op bureaublad, [i:11b37afc92]new[/i:11b37afc92] -> [i:11b37afc92]shortcut[/i:11b37afc92] of Rechts klikken op programma, [i:11b37afc92]create shortcut[/i:11b37afc92] en dan je sleep je de shortcut naar het bureaublad.
Link naar reactie
[quote:dff4ec4838="Wim Sturkenboom"]Als ik je vraag snap heeft het weinig met programmeren te maken. En anders snap ik je vraag niet. Rechts klikken op bureaublad, [i:dff4ec4838]new[/i:dff4ec4838] -> [i:dff4ec4838]shortcut[/i:dff4ec4838] of Rechts klikken op programma, [i:dff4ec4838]create shortcut[/i:dff4ec4838] en dan je sleep je de shortcut naar het bureaublad.[/quote:dff4ec4838] Ik heb de code (listing) nodig die deze handelingen (automatisch) verricht. Het mag in [VB] of [Visual C++] Abcott
Link naar reactie
[quote:8e2211fafd="abcott"]Hallo (Window) programmeurs, Hoe maak je van een programma een snelkoppeling op het bureaublad? Of hoe maak je van een ikoon een snelkoppeling naar een programma? Welke API/DLL's zijn daarvoor nodig? Trouwens kan het ook zonder? Ik gebruik XP, maar W98 is ook goed. Abcott[/quote:8e2211fafd] Misschien help het als ik vertel wat ik denk te weten: Ik moet waarschijnlijk een LNK file maken in de DOC en Settings map van de default user (XP). Maar hoe doet Windows dat? Welke API's gebruiken ze? Moet ik mijn vragen misschien ook in een Windows forum plaatsen? Abcott
Link naar reactie
[quote:825ea98cc4="Wim Sturkenboom"]Zoek [url=http://msdn.microsoft.com/library/]hier[/url] even naar IShellLink. Effe googlen: Ik vond [url=http://www.bcbdev.com/faqs/faq79.htm]deze[/url] voor C++Builder; je kunt er wat aan hebben. En [url=http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=869&lngWId=1]deze[/url] voor VB.[/quote:825ea98cc4] Ik heb van anderen ook tips ontvangen. De komende tijd heb ik het er druk mee. De API call's naar de VB5STKit.dll en VBSysDbg.dll moet ik nog laten uitwerken. Ik ben geen programmeur, maar ik heb kennissen die dat wel kunnen. Hartelijk bedank! Abcott
Link naar reactie
  • 1 maand later...
Dit is de afloop: Uit IShellLink ben ik niet wijzer geworden. Bij verschillende newsgroepen (van ms programmeurs) kreeg ik te horen dat het met IShellLink kon. VB viel af. VB kan in een omweg een snelkoppeling maken. Hiervoor wordt het exe bestand in de map van onlangsgeopende bestanden geopend. MS maakt dan automatisch een snelkoppeling. Daarna wordt de snelkoppeling naar het bureaublad gekopieerd. [b:0258650587]Helaas maakt XP geen snelkoppelingen meer in de map van onlangs geopend van EXE bestanden[/b:0258650587] Ik heb niemand bereid gevonden de C++ code voor me te bewerken. [b:0258650587]Gelukkig blijkt MICROSOFT gewoon het programma standaard op de CD van W95 te hebben geleverd[/b:0258650587] Het programma SHORTCUT.EXE doet precies wat ik wil en het stond op de OEM W95 CD (volgens zeggen). Ik heb het intussen ergens anders vandaan gehaald. Abcott
Link naar reactie
[quote:2cbdf103e7="abcott"]Uit IShellLink ben ik niet wijzer geworden. Bij verschillende newsgroepen (van ms programmeurs) kreeg ik te horen dat het met IShellLink kon.[/quote:2cbdf103e7] [code:1:2cbdf103e7] BOOL CreateShortCut(LPCSTR pszShortcutFile, LPSTR pszLink, LPSTR pszDesc) { BOOL bRet = FALSE; if (SUCCEEDED(CoInitialize(NULL))) { IShellLinkA* psl = NULL; if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkA, (LPVOID*)&psl)) && psl) { IPersistFile* ppf = NULL; if (SUCCEEDED(psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf)) && ppf) { if (SUCCEEDED(psl->SetPath(pszShortcutFile)) && SUCCEEDED(psl->SetDescription(pszDesc))) { WORD wsz[MAX_PATH]; if (MultiByteToWideChar(CP_ACP, 0, pszLink, -1, wsz, MAX_PATH)) bRet = SUCCEEDED(ppf->Save(wsz, TRUE)); } ppf->Release(); } psl->Release(); } CoUninitialize(); } return bRet; } void CAboutDlg::OnButtonShortcut() { CHAR szAppPath[MAX_PATH]; DWORD dwSize = sizeof(szAppPath); if (SUCCEEDED(AssocQueryStringA( ASSOCF_OPEN_BYEXENAME, ASSOCSTR_EXECUTABLE, "notepad.exe", NULL, szAppPath, &dwSize))) { CHAR szLinkPath[MAX_PATH+64]; if (SHGetSpecialFolderPathA(m_hWnd, szLinkPath, CSIDL_PERSONAL, FALSE)) { if (lstrcatA(szLinkPath, "\\ng091101.lnk")) { BOOL b = CreateShortCut( szAppPath, szLinkPath, "Launch Notepad"); } } } } [/code:1:2cbdf103e7] [quote:2cbdf103e7="abcott"] Helaas maakt XP geen snelkoppelingen meer in de map van onlangs geopend van EXE bestanden[/quote:2cbdf103e7] [url=http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shaddtorecentdocs.asp]SHAddToRecentDocs[/url]
Link naar reactie
[quote:9972b3508c]Note Microsoft Windows XP filters .exe files from the recently used documents list. Although SHAddToRecentDocs will accept the path of a executable file under Windows XP, that file will not appear to the My Recent Documents list. [/quote:9972b3508c] Het creeren van een snelkoppeling was in VB gebasseerd op het maken van een snelkoppeling in RecentDocs. Het nieuwe filter van XP staat die methode in de weg. Abcott
Link naar reactie
[quote:09b938f80d="abcott"][quote:09b938f80d]Note Microsoft Windows XP filters .exe files from the recently used documents list. Although SHAddToRecentDocs will accept the path of a executable file under Windows XP, that file will not appear to the My Recent Documents list. [/quote:09b938f80d] Het creeren van een snelkoppeling was in VB gebasseerd op het maken van een snelkoppeling in RecentDocs. Het nieuwe filter van XP staat die methode in de weg.[/quote:09b938f80d] Niet getest: Dit kan twee dingen betekenen. 1. Bij het aanroepen van SHAddToRecentDocs met een verwijzing naar een executable wordt inderdaad geen snelkoppeling gemaakt. 2. Bij het aanroepen van SHAddToRecentDocs met een verwijzing naar een executable wordt gewoon een snelkoppeling gemaakt, maar is deze snelkoppeling niet te zien in de "My Recent Documents" list door de Explorer shell filter.
Link naar reactie
Hallo h4xXOr, Ten aanzien van je code vraag ik mij het volgende af: - zou hier een API/DLL van gemaakt kunnen worden? Daarbij wil ik dan de EXE (pszShortcutFile?) kunnen geven, het installatiepad (pszLink?) en eventueel de omschrijving (pszDesc?) of een te gebruiken ikoon. Ik heb geen C++ compiler. Ik vermoed dat met jouw code een snelkoppeling voor Notepad wordt gemaakt met de naam ng091101? Abcott.
Link naar reactie
Via Scripts kun je wel Shortcuts creëren... [code:1:df63e9eec2] // JScript. Shell = new ActiveXObject("WScript.Shell"); DesktopPath = Shell.SpecialFolders("Desktop"); link = Shell.CreateShortcut(DesktopPath + "\\test.lnk"); link.Arguments = "1 2 3"; link.Description = "test shortcut"; link.HotKey = "CTRL+ALT+SHIFT+X"; link.IconLocation = "app.exe,1"; link.TargetPath = "c:\\blah\\app.exe"; link.WindowStyle = 3; link.WorkingDirectory = "c:\\blah"; link.Save(); ' VBScript. Set Shell = CreateObject("WScript.Shell") DesktopPath = Shell.SpecialFolders("Desktop") Set link = Shell.CreateShortcut(DesktopPath & "\test.lnk") link.Arguments = "1 2 3" link.Description = "test shortcut" link.HotKey = "CTRL+ALT+SHIFT+X" link.IconLocation = "app.exe,1" link.TargetPath = "c:\blah\app.exe" link.WindowStyle = 3 link.WorkingDirectory = "c:\blah" link.Save [/code:1:df63e9eec2] Misschien helpt jullie dit (terug) vooruit?
Link naar reactie
Nog een andere mogelijkheid: [url] http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q155/3/03.asp&NoWebContent=1 [/url] Zoals u ziet is via [b:0d0fd29006]VB[/b:0d0fd29006] de oplossing vrij eenvoudig te benaderen. Met [b:0d0fd29006]C++[/b:0d0fd29006] heb ik (ooit) de omweg via scripts genomen, en dat werkte prima. Misschien bestaat er een meer directe manier, maar die ken ik niet...
Link naar reactie
[quote:e0f8b121c0="E. Cle"]Oeps... Ik vergat te vermelden dat je het [b:e0f8b121c0]File Shell[/b:e0f8b121c0] object erbij moet gebruiken![/quote:e0f8b121c0] Hoe zo? Wat is het FILE SHELL OBJECT? Ik ben noviet en zeker voor wat betreft JAVASCRIPT. Het (of de?) Javascript maakt wel een snelkoppeling op mijn bureaublad. Dat vind ik al fantastisch. Er verschijnt echter eerst een waarschuwing voor het gebruik van ActiveXObject. Kan het script ook zonder deze waarschuwing? Kan het script ook een ikoon verwisselen of een aan te geven ikoon gebruiken? Wat houdt IconLocation ="app.exe,1" in? enz. Bestaat hier wat documentatie over? Abcott
Link naar reactie
[quote:294293ab6f="abcott"]Hallo h4xXOr, Ten aanzien van je code vraag ik mij het volgende af: - zou hier een API/DLL van gemaakt kunnen worden? [/quote:294293ab6f] Ja. [quote:294293ab6f="abcott"] Daarbij wil ik dan de EXE (pszShortcutFile?) kunnen geven, het installatiepad (pszLink?) en eventueel de omschrijving (pszDesc?) of een te gebruiken ikoon. [/quote:294293ab6f] Ja, kan ook. [quote:294293ab6f="abcott"] Ik heb geen C++ compiler. Ik vermoed dat met jouw code een snelkoppeling voor Notepad wordt gemaakt met de naam ng091101?[/quote:294293ab6f] Ja. VB: [url=http://mail.python.org/pipermail/python-list/1999-November/015700.html]Win32api.... can it create a Windows shortcut (.lnk) file?[/url]
Link naar reactie
[quote:e5b75330df="abcott"]Bestaat hier wat documentatie over?[/quote:e5b75330df] Bijvoorbeeld... [url]http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28001169[/url] Ook boeken over dit onderwerp vindt je in overvloed. Van wat ik heb gezegd over dat FILE SHELL OBJECT, vergeet dat maar. Dit is impliciet en heeft hier verder geen toegevoegde waarde... [quote:e5b75330df="abcott"]Wat houdt IconLocation ="app.exe,1" in?[/quote:e5b75330df] Iedere executable (.dll of exe) bezit één of meerdere icons in zich. Bijvoorbeeld CALC.EXE heeft er maar één. In dit geval moet je dan schrijven: [code:1:e5b75330df] link.IconLocation = "%SystemRoot%\System32\calc.exe,0" link.TargetPath = "%SystemRoot%\System32\calc.exe" [/code:1:e5b75330df] De 0 is het eerste icoon in de rij, 1 is dan de tweede, enzovoorts. [quote:e5b75330df="abcott"]Kan het script ook een ikoon verwisselen of een aan te geven ikoon gebruiken?[/quote:e5b75330df] Dit script uiteraard niet, maar met een voor dit doel geschreven script moet dit ongetwijfeld lukken. [quote:e5b75330df="abcott"]Kan het script ook zonder deze waarschuwing?[/quote:e5b75330df] Dit hangt af van de instellingen van uw antivirus programma... Als deze is ingesteld op het detecteren van scriptuitvoering, zal zal 'm dit uiteraard melden. Deze waarschuwing uitschakelen vanuit de script zelf is, logisch gezien, uitaard onmogelijk, want dan zou iedere virusschrijver daar ongetwijfeld overvloedig gebruik van maken.
Link naar reactie
[quote:4c8f00b586="E. Cle"] Dit hangt af van de instellingen van uw antivirus programma... Als deze is ingesteld op het detecteren van scriptuitvoering, zal zal 'm dit uiteraard melden. Deze waarschuwing uitschakelen vanuit de script zelf is, logisch gezien, uitaard onmogelijk, want dan zou iedere virusschrijver daar ongetwijfeld overvloedig gebruik van maken.[/quote:4c8f00b586] Hartelijk dank voor uw informatie. Ik heb de Jscript getest. Daartoe heb ik eerst een HTML bestand gemaakt waarin ik de script heb geplaatst. Dit HTML bestand heb ik via een Window DLL geopend. (Shell32.DLL ShellExecute) Als parameter heb ik daarbij _SW_HIDE (hide window) meegegeven. Helaas wordt het scherm niet verborgen, misschien omdat de antiviruswaarschuwing dat tegengaat. De script doet overigens precies wat ik wilde. Heel knap van u. Abcott
Link naar reactie
Hallo h4xXOr, Ik ben dit hele onderwerp verkeerd begonnen. Ik vroeg om C++ en of VB code, terwijl ik daar niet mee kan omgaan. Kun jij je code in een exe bestand of een API/DLL voor mij omzetten? Moet ik dit eigenlijk niet van MS ontvangen? Die hebben voorheen het programma shortcut.exe standaard met W95 meegeleverd, waarom niet ook bij XP? Abcott
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...