לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 25-07-2005, 00:01
צלמית המשתמש של bazooka joe
  bazooka joe bazooka joe אינו מחובר  
 
חבר מתאריך: 16.07.02
הודעות: 6,814
Facebook profile
אמממ...
בתגובה להודעה מספר 1 שנכתבה על ידי _ דורון _ שמתחילה ב "הפיכת קיצורי דרך לקבצים לקבצים עצמם"

אפשר בקלות רבה לבנות תוכנה שתעשה את זה.
המטרה העיקרית של התוכנה תהיה למצוא את היעד שאליו מצביע הקיצור דרך ולהעתיק את הקובץ מהיעד הזה ליעד שלנו.
על מנת שנוכל לעשות זאת עלינו לדעת איך בנוי קובץ מסוג lnk(קיצור דרך).

בכדי ללמוד על מבנה הקובץ הזה(ובכלל כל קובץ אחר) יש אתר מאוד מומלץ, והוא-
www.wotsit.org
יש שם למעלה שדה של חיפוש, תכתוב שם LNK ותריץ חיפוש. עכשיו אתה אמור לראות שלוש תוצאות.
הראשונה למשל היא זאת
קוד:
Date: Mon, 11 Aug 1997 19:03:42 -0700 To: submit@wotsit.demon.co.uk From: Elvis <elvis@iccom.com> Subject: I see you are looking for info on windows .LNK file format.... It's been a while since I've messed with that, but I dug up the following source code. It has been so long that I can't remember if this was the file I got working, so someone should test it out (I don't have time). However, it basically decodes the windows .LNK file format to find out what it is a shortcut to, and determines if that is a directory (I was going to write a unix type ln command using .LNK file formats.....). There are 2 files here. One is a C version, the other is a C++ version.... Hope this helps.... -Donald Murray ============================================ C version ============================================ #include <windows.h> #include <windowsx.h> #include <objbase.h> #include <shlobj.h> #include <stdio.h> #include <initguid.h> #include <string.h> main(int ac, char *av[]) { IShellLink *psl; HRESULT hres; WIN32_FIND_DATA wfd; char szGotPath[MAX_PATH]; IPersistFile *ppf; if (ac != 2) { printf("Syntax: ln <pathname>\n"); return 0; } hres = CoInitialize(NULL); if (!SUCCEEDED(hres)) printf("Could not open the COM library\n"); hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, &IID_IShellLink, (LPVOID *)&psl); if (SUCCEEDED(hres)) { hres = psl->lpVtbl->QueryInterface(psl, &IID_IPersistFile, &ppf); if (SUCCEEDED(hres)) { WORD wsz[MAX_PATH]; MultiByteToWideChar(CP_ACP, 0, av[1], -1, wsz, MAX_PATH); hres = ppf->lpVtbl->Load(ppf, wsz, STGM_READ); if (SUCCEEDED(hres)) { hres = psl->lpVtbl->Resolve(psl, 0, SLR_ANY_MATCH); if (SUCCEEDED(hres)) { strcpy(szGotPath, av[1]); hres = psl->lpVtbl->GetPath(psl, szGotPath, MAX_PATH, (WIN32_FIND_DATA *)&wfd, SLGP_SHORTPATH ); if (!SUCCEEDED(hres)) printf("GetPath failed!\n"); printf("This points to %s\n", wfd.cFileName); if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) printf("This is a directory\n"); } } else printf("IPersistFile Load Error\n"); ppf->lpVtbl->Release(ppf); } else printf("QueryInterface Error\n"); psl->lpVtbl->Release(psl); } else printf("CoCreateInstance Error - hres = %08x\n", hres); return 0; } ================================== C++ version ================================== #include <windowsx.h> #include <objbase.h> #include <shlobj.h> #include <stdio.h> #include <initguid.h> #include <stdlib.h> #include <io.h> #include <string.h> // This program should print out whether the file is a link and where it // points to and whether it is a directory or not. // main(int ac, char *av[]) { if (ac != 2) { printf("Syntax: ln <pathname>\n"); return 0; } IShellLink *psl; // pointer to IShellLink i/f HRESULT hres; WIN32_FIND_DATA wfd; char szGotPath[MAX_PATH]; // Get pointer to the IShellLink interface. hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *)&psl); if (SUCCEEDED(hres)) { // Get pointer to the IPersistFile interface. IPersistFile *ppf; hres = psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf); if (SUCCEEDED(hres)) { WORD wsz[MAX_PATH]; // Ensure string is Unicode. MultiByteToWideChar(CP_ACP, 0, av[1], -1, wsz, MAX_PATH); // Load the shell link hres = ppf->Load(wsz, STGM_READ); if (SUCCEEDED(hres)) { // Resolve the link. hres = psl->Resolve(0, SLR_ANY_MATCH); // ^ // Using 0 instead -| of hWnd, as hWnd is only used if // interface needs to prompt for more information. Should use // hWnd from current console in the long run. if (SUCCEEDED(hres)) { strcpy(szGotPath, av[1]); hres = psl->GetPath(szGotPath, MAX_PATH, (WIN32_FIND_DATA *)&wfd, SLGP_SHORTPATH ); if (!SUCCEEDED(hres)) printf("GetPath failed!\n"); printf("This points to %s\n", wfd.cFileName); if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) printf("This is a directory\n"); } } else printf("IPersistFile Load Error\n"); ppf->Release(); } else printf("QueryInterface Error\n"); psl->Release(); } else printf("CoCreateInstance Error - hres = %08x\n", hres); return 0; }
תעובר על הקוד ותראה שזה מאוד פשוט.
ועכשיו כל מה שנותר לך לעשות הוא תוכנה שקוראת קובץ אחר קובץ(מסוג LNK) מתקייה מסויימת,
מפענת את הקובץ ומוצאת את הקובץ המקורי אליו הוא מצביע, מעתיקה את הקובץ לתקייה שלנו....
ואותו דבר לקובץ הבא עד שנגמרים הקבצים.

הבנת?

ד"א
לא אמרת באיזה שפה אתה משתמש.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 18:31

הדף נוצר ב 0.05 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר