Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

2
12
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, это несложно, только ты скажи имя папки

#115436   | 14.08.07 12:18
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, программа готова, забирать отсюда. Я в ней реализовал возможность выбора папки для копирования (но только из директории с приложением, тебе же автозапуск CD нужен?) - если не устроит, скажи имя папки, я перепишу. Другие проблемы будут - пиши в личку. Да, на всякий случай: программка сжата UPX'ом 3.01.

Если кому-то интересно, то ниже исходный код на Delphi. Распространяется по принципу "plug-n-play" -"вставляй и компилируй"

program Autorun;

{$APPTYPE CONSOLE}

uses
  SysUtils, ShellApi, Registry, Forms, Windows;
label start;
// Объявляем нужные нам переменные
var
  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: Array [0..128] of Char;
  DesktopPath, ExePath, DirEnter: string;
  Conv, DirName: string;
  Registry: TRegistry;
begin
start:
  // Проверяем, нет ли каких-нибудь ошибок
  try
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
  // Считываем из реестра путь к рабочему столу пользователя
  Registry := TRegistry.Create;
  try
    Registry.OpenKey('Software\Microsoft\Windows\'+
      'CurrentVersion\Explorer\Shell Folders', False);
    DesktopPath := Registry.ReadString('Desktop');
    finally
    Registry.Free;
  end;
  // Получаем путь к папке с Autorun.exe
  ExePath := ExtractFilePath(Application.ExeName);
  // Приглашаем пользователя посетить нашу программу
  Writeln('Џ®¦ «г©бв , ўўҐ¤ЁвҐ Ё¬п Ї ЇЄЁ ¤«п Є®ЇЁа®ў ­Ёп.');
  Writeln('  ЏаЁ¬Ґа: "Music" (ЎҐ§ Є ўл祪!)');
  Writeln;
  // Получаем нужные нам данные ...
  Write('?¬п Ї ЇЄЁ: ');
  Readln(DirEnter);
  // ... и начинаем их конвертировать в формат Win
  Conv:=Copy(DirEnter, 1, Length(DirEnter));
  OemToCharBuff(PChar(Conv), PChar(Conv), Length(Conv));
  DirName:=Copy(Conv, 1, Length(Conv));
  // Создаём пути к исходной и конечной папке
  FillChar(frombuf, Sizeof(frombuf), 0);
  FillChar(tobuf, Sizeof(tobuf), 0);
  StrPCopy(frombuf, ExePath + '\' + DirName + '\*');
  StrPCopy(tobuf, DesktopPath + '\' + DirName);
  // Снова обращаемся к пользователю
  Writeln;
  Write('Џа®ўҐаЄ  бгйҐбвў®ў ­Ёп Ї ЇЄЁ...');
  // Проверяем, существует ли указанная им папка ...
  // ... Если нет, предлагаем ему попытать счастье ещё раз
  if DirectoryExists(ExePath + '\' + DirName) = False then begin
    Writeln(' Џ ЇЄ  ­Ґ бгйҐбвўгҐв. Џ®Їа®Ўг©вҐ Ґйс.');
    Writeln; Writeln;
    Writeln('**********************************************');
    Writeln; goto start;
  end;
  // ... Если да, продолжаем работать
  Writeln(' Џ ЇЄ  ­ ©¤Ґ­ . Џ®¤®¦¤ЁвҐ, д ©«л Є®ЇЁаговбп...');
  // Создаём необходимые данные для функции ShFileOperation
  With OpStruc DO Begin
    Wnd := Random(9999);
    wFunc:= FO_COPY;
    pFrom:= @frombuf;
    pTo:=@tobuf;
    fFlags:= FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
    fAnyOperationsAborted := True;
    hNameMappings := Nil;
    lpszProgressTitle := Nil;
  end;
  // Выполняем функцию ShFileOperation
  ShFileOperation(OpStruc);
  // И, наконец, прощаемся с пользователем
  Writeln;
  Write('Џ ЇЄ  бЄ®ЇЁа®ў ­ . Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг ¤«п ўл室 ... ');
  Readln;
end.


pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
fAnyOperationsAborted := True;
hNameMappings := Nil;
lpszProgressTitle := Nil;
end;
// Выполняем функцию ShFileOperation
ShFileOperation(OpStruc);
// И, наконец, прощаемся с пользователем
Writeln;
Write('Џ ЇЄ  бЄ®ЇЁа®ў ­ . Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг ¤«п ўл室 ... ');
Readln;
end.[/code]

#115473   | 14.08.07 17:52
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, кстати а какой компилер нужен то?
ОГРОМНОЕ ТЕБЕ СПАСИБО!!!Щас будем тестить!!!

#115557   | 15.08.07 14:15
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, кстати можеш сделать чтобы не вводить имя а сразу копировало название папки Soft

#115558   | 15.08.07 14:16
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, компилер - Delphi. Насчёт автокопирования - сейчас попробую

#115604   | 15.08.07 18:18
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

Всё, можно забирать. При том сделал две версии:
Версия 1: Если папка не найдена (нет на диске папки "Soft"), программа предлагает открыть маленькое окошко, ввести в него имя папки и попробовать снова или же просто выйти (MessageBox, Да-Нет);
Версия 2: Если папка не найдена, программа закрывается. Тогда менять имя папки только ресторатором в ресурсов (специально для этого оставил поле Edit).
Какую выкладывать?

#115628   | 15.08.07 22:09
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, что-то мы с тобой всё никак не пересечёмся. Ладно, выкладываю оба варианта. Забирать здесь, за исходным кодом, если кому-то надо, обращаться в личку.

Поблагодарили: server_64

#115639   | 15.08.07 22:57
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, да это точно чтото не рересекаемся но ничего.
СПАСИБО Буду пробовать!!!
А кстати два раза можно благожарить?

#115654   | 15.08.07 23:53
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, вот и пересеклись Можно, только раз в день

#115656   | 16.08.07 00:10
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, ага точно

#115657   | 16.08.07 00:11
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, ну как, протестил? То, что нужно было? Который вариант использовал?

#115658   | 16.08.07 00:25
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, да потестил все супер!!!Спасибо! Оба варианта пригодились!

#115716   | 16.08.07 10:56
Не в сети
Сообщений: 1782
Благодарностей: 101
Предупреждений:
Из: Russia Москва
Род занятий: .NET developer

server_64, ну вот и славно Если что - обращайся.

#115731   | 16.08.07 11:16
Не в сети
Сообщений: 561
Благодарностей: 17
Предупреждений:
Из: Ukraine
Род занятий:

Sgt.Riggs, ага конечно

#115772   | 16.08.07 16:18
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.039 секунд (Общее время SQL: 0.017 секунд - SQL запросов: 96 - Среднее время SQL: 0.00018 секунд))
Top.Mail.Ru