|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir
Would you like to react to this message? Create an account in a few clicks or log in to continue.

|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir


 
AnasayfaLatest imagesAramaKayıt OlGiriş yap

 

 Sistem Programlama ve İleri C Uygulamaları

Aşağa gitmek 
YazarMesaj
serezo
Yönetici
Yönetici
serezo


Ruh Hali : Sistem Programlama ve İleri C Uygulamaları Defaul10
Mesaj Sayısı : 952
Rep Puanı : 13131
Teşekkür Aldı : 0
Kayıt tarihi : 29/10/09
Nerden Nerden : Kocaeli/Gebze
İş/Hobiler İş/Hobiler : MEsaj atmak :D
Lakap Lakap : Sezo

Sistem Programlama ve İleri C Uygulamaları Empty
MesajKonu: Sistem Programlama ve İleri C Uygulamaları   Sistem Programlama ve İleri C Uygulamaları EmptySalı Ara. 08, 2009 5:08 pm

Windows Altında Dizin Ağacını Dolaşan Örnek Program (Sistem Programlama ve İleri C Uygulamaları)


Açıklama:

Windows'ta FindFirstFile ve FindNextFile fonksiyonlarını kullanarak
özyinelemeli bir biçimde dizin ağacını dolaşan örnek bir program.
Özyinelemeli fonksiyon WalkTree fonksiyonudur. Bu fonksiyon DirTree
sarma fonksiyonu tarafından çağrılmaktadır. Fonksiyonun her dosyayı
buldukça parametreleri ile verilen bir fonksiyonu çağırdığına dikkat
ediniz. Örnek programda bir .EXE dosya aranmış ve CreateProcess
fonksiyonuyla çalıştırılmıştır.

Kaynak Kod:

Kod:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void WalkTree(const char *path, void (*Proc) (char *))
{
  char szSearchPath[MAX_PATH], szNextFile[MAX_PATH];
  BOOL result = TRUE;
  WIN32_FIND_DATA finfo;
  HANDLE hDir;

  sprintf(szSearchPath, "%s\\*.*", path);
  hDir = FindFirstFile(szSearchPath, &finfo);
  if (hDir == INVALID_HANDLE_VALUE)
      return;
  while (result) {
      if (!strcmp(finfo.cFileName, ".")) {
        FindNextFile(hDir, &finfo);
        result = FindNextFile(hDir, &finfo);
        continue;
      }
      sprintf(szNextFile, "%s\\%s", path, finfo.cFileName);
      Proc(szNextFile);
      if (finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        WalkTree(szNextFile, Proc);
        result = FindNextFile(hDir, &finfo);
}
FindClose(hDir);
}

void DirTree(const char *path, void (*Proc) (char *))
{
  char correctPath[MAX_PATH];
  int lastIndex;

  if (*path == '\0')
      return;
  strcpy(correctPath, path);
  lastIndex = strlen(path) - 1;
  if (path[lastIndex] == '\\' || path[lastIndex] == '/' || path[lastIndex] == ':')
      correctPath[lastIndex] = '\0';
  WalkTree(correctPath, Proc);
}

#if 1

char g_szPath[MAX_PATH];

BOOL CmpPath(const char *path)
{
  char *pStr = strrchr(path, '\\');

  return stricmp(pStr + 1, g_szPath) == 0;
}

void Execute(char *path)
{
  STARTUPINFO si = {sizeof(STARTUPINFO)};
  PROCESS_INFORMATION pi;

  if (!CmpPath(path))
      return;
  if (CreateProcess(NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &si, π)) {
      CloseHandle(pi.hProcess);
      exit(0);
  }
  else
      fprintf(stderr, "Cannot create process: %d\n", GetLastError());
}

int main(void)
{
  printf("Dosya: ");
  gets(g_szPath);
  strcat(g_szPath, ".exe");

  DirTree("d:\\", Execute);

  return 0;
}

#endif
Sayfa başına dön Aşağa gitmek
 
Sistem Programlama ve İleri C Uygulamaları
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Solidworks2010-İleri.Düzey.Eğitim.Videoları
» Console Uygulamaları
» Türevin Uygulamaları
» Teknik Resim 1-2, A4 Uygulama Levhaları Uygulamaları Avi*
» Programlama Ve C

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
|Refleks|-Oyun,Tasarım,Film,Program,Tek link,İndir :: Bilgisayar Dersleri :: C/C++-
Buraya geçin: