Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры



Выпуск # 178


http://www.kbyte.ru/

 

Новый выпуск!

Здравствуйте!
Очередной выпуск рассылки Kbyte.Ru!

 

Содержание выпуска

Система ЭКСПЕРТ

    Вопрос #000433: Расширенное воспроизведение звука

    Вопрос #000429: Как узнать IP-адрес?

    Вопрос #000426: Как сохранить содержимое ComboBox

    Вопрос #000424: пропадают типы проектов в vb6

    Вопрос #000422: Удаление раздела реестра

Последнее на форумах

    «Укорачивание» строки с тропинкой до файла

    Макрос в Excel

    Заголовок и таскбар

    Коммандная строка и VB6

    Кодировка

Последние статьи

    Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)

    Работа с SQL – Запросы

    Использование XML.Serialization

    Выбор языка программирования для научных работ (2-я редакция)

    Работаем с MIME

Интересные коды и решения

Юмор на Kbyte.Ru

 

Система ЭКСПЕРТ

 

Система «Эксперт» - уникальная система, которая поможет решить, если не все, то многие Ваши проблемы с программированием и разработкой! Если у Вас есть какой-либо вопрос по программированию или разработке, то Вы всегда можете задать его нашим Экспертам! При этом каких-либо особых действий от Вас не потребуется! Просто отправьте Ваш вопрос на адрес mailto:expert@kbyte.ru, в теме письма укажите тему вопроса, в тексте – сам вопрос, и все! Эксперты дадут Вам ответ в течение 12-24 часов, на тот адрес, с которого Вы отправите вопрос. Все проще простого! Никакой регистрации и заполнение бесконечных форм, никаких наездов, оскорблений и насмешек со стороны гуру, просто спросите и получите ответ ;-)


Вопрос #000433: Расширенное воспроизведение звука

Автор вопроса: Arcady // 26.08.2007 / 15:00

Здравствуйте эксперт!

Вопрос:
Возможно-ли на Visual Basic 6.0 без использования посторонних библиотек (например, fmod.dll) реализовать воспроизведение звука "на своём канале"? То есть, создать (открыть) свой звуковой канал, чтобы воспроизводить в нём не только WAVE, но и, хотя бы MP3, и задавать для него громкость независимо от Windows? Например, как в Winamp, или в той-же библиотеке fmod.dll.

Заранее благодарен.

--------------------------------------
Категория: --- Visual Basic 5.0/6.0

Отвечает: Алексей Немиро // 26.08.2007 / 15:54

Здравствуйте, Arcady!

Стандартными средствами Visual Basic 6.0, без использования сторонних библиотек и компонентов, это сделать не возможно.

--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000429: Как узнать IP-адрес?

Автор вопроса: Андрей // 24.08.2007 / 19:28

Как узнать IP-адрес активного интернет-подключения средствами VB6?

--------------------------------------
Категория: --- Visual Basic 5.0/6.0

Отвечает: Алексей Немиро // 26.08.2007 / 04:28

Здравствуйте, Андрей!

Создайте стандартный EXE-проект. Расположите на форме (Form) элемент Winsock (меню: Проект -> Компоненты -> Microsoft Winsock Control 6.0) и добавьте нижеследующий код.

001:
002:
003:
Private Sub Form_Load()
 MsgBox "Ваш IP: " & Winsock1.LocalIP
End Sub


--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000426: Как сохранить содержимое ComboBox

Автор вопроса: "Abu Ali" // 24.08.2007 / 10:16

Здравствуйте Эксперты, У меня такой вопрос: Существет форма содержащая ComboBoxы. Эта форма вызывается из главной формы. Выбираются значения ComboBox. Как сделать так, чтобы при следующем вызове формы с ComboBox, ComboBoxы содержали значения выбранные при предыдущем вызове? И чтобы экземпляр формы создавался только один раз?

Отвечает: Алексей Немиро // 24.08.2007 / 13:01

Здравствуйте!

Вот небольшой пример
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
/// <summary>
/// Небольшой пример :)
/// Автор: Немиро Алексей
/// Специально для проекта Kbyte.Ru (http://kbyte.ru)
/// Copyright (c) Nemiro AS, 24.08.2007
/// mailto:Алексей@Немиро.Ру
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
 this.Width = 500; this.Height = 300;
 Button b = new Button();
 b.Click += new EventHandler(b_Click);
 b.Text = "Нажми, но только аккуратно ;)";
 b.Width = 250;
 b.Left = (this.Width - b.Width) / 2;
 b.Top = (this.Height - b.Height) / 2;
 this.Controls.Add(b); 
}

private void b_Click(object sender, EventArgs e)
{
 ComboBox c = new ComboBox();
 for (int i = 0; i <= 9; i++)
 {
  c.Items.Add("Запись " + i.ToString());
 }

 Form f = new Form();
 if (Application.OpenForms.Count <= 1)
 {
  f.Name = "MyNewForm";
  f.Width = 300; f.Height = 300;
  c.Width = 200; c.DropDownStyle = ComboBoxStyle.DropDownList;
  c.Left = (f.Width - c.Width) / 2;
  c.Top = (f.Height - c.Height) / 2;
  c.SelectedIndexChanged += new EventHandler(c_SelectedIndexChanged);
  f.Controls.Add(c);
  f.FormClosing += new FormClosingEventHandler(f_FormClosing);
 }
 else
 {
  for (int i = 0; i <= Application.OpenForms.Count - 1; i++)
  {
   if (Application.OpenForms[i].Name == "MyNewForm")
   {
    f = Application.OpenForms[i];
    break;
   }
  }
  
 }
 if (f != null) { f.Show(); }
}

private void c_SelectedIndexChanged(object sender, EventArgs e)
{
 MessageBox.Show("Выбрана: \"" + ((ComboBox)sender).Text + "\"");
}

private void f_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
 e.Cancel = true;
 ((Form)sender).Hide();
}


--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000424: пропадают типы проектов в vb6

Автор вопроса: Сницарёв Ю.В. // 22.08.2007 / 09:07

Здравствуйте!
Пользуюсь vb6 sp4 (версия проф-л или энт-з), операционка WinXP Pro Sp1
Rus. При старте студии (если указано в настройках) в диалоговом окне
предлагается выбрать тип проекта (стандартный, активХ...). Уже пару раз
сталкиваюсь с тем, что из набора проектов по непонятной причине исчезает
большинство типов проектов, остаются только самые простые. В студии ничего
не переустанавливалось и не менялось.
Вопрос: как вернуть пропавшие профи-типы проектов?
С уважением Юрий
--
Сницарёв Ю.В.

Отвечает: Алексей Немиро // 22.08.2007 / 09:23

Здравствуйте, Сницарёв Ю.В!

Шаблоны для проектов лежат в папке
C:\Program Files\Microsoft Visual Studio\VB98\Template

Если эту папку удалить, или по каким-то причинам VB не будет иметь к
ней доступ, то список проектов будет сокращен до:
Standart EXE
ActiveX EXE
ActiveX DLL
AtiveX Control

Если с папкой у Вас все нормально, то возможно, что-то или кто-то
блокирует к ней доступ, возможно какой-нибудь антивирус, или вирус :)

--
С наилучшими пожеланиями,
Немиро Алексей

 

Вопрос #000422: Удаление раздела реестра

Автор вопроса: weltkind // 19.08.2007 / 00:19

Добрый день expert-ы
Вот один вопрос как мне программно в VB 2005 удалить раздел реестра со
всеми ключами которые он содержит!
Зарание Вам блогадарен!

Отвечает: Алексей Немиро // 26.08.2007 / 04:32

Здравствуйте, weltkind!

Для работы с реестром, в .NET существует довольно простой класс - Microsoft.Win32.Registry

--
С наилучшими пожеланиями,
Немиро Алексей

 


Чтобы задать Ваш вопрос, отправьте его на адрес expert@kbyte.ru

Раздел Эксперт на сайте Kbyte.Ru

Наверх

 

 

Последнее на форумах

«Укорачивание» строки с тропинкой до файла | Автор: 5acred Phoenix
Добавлено: 27.08.2007 / 23:08 | ответов: 0 | просмотров: 9

Доброе время суток!

Меня мучает такой вопрос: есть ли в .NET стандартные средства для «укорачивания» слишком длинных строк?

Поясню. Допустим, у нас есть строка (не вдаваясь в фантазию, пишу как есть) "C:\Documents and Settings\<USER_NAME>\Application Data\QIP\Profiles\<PROFILE_NAME>\History\InfICQ_<UIN>.qhf". Нужно в зависимости от располагаемого свободного места на контроле представлять её как "C:\Documents and Settings\<USER_NAME>\Application Data\QIP\...\InfICQ_<UIN>.qhf", "C:\Documents and Settings\...\InfICQ_<UIN>.qhf" и т. д.

Заранее спасибо.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Макрос в Excel | Автор: Gera
Добавлено: 27.08.2007 / 17:09 | ответов: 0 | просмотров: 13

Здраствуйте.
Возникла такая небольшая проблемка. Суть проблемы заключается в следующем: в книге Excel находится некоторая информация, которая занимает несколько страниц (больше 2). Необходимо написать макрос, который будет в каждой первой ячейке новой страницы вставлять заданный текст и окрашывать ячейку определенным цветов. До этого как написать сюда я пробовол поймать ячейку находящуюся после разрыва страницы , но у меня ничего не получилось.
Заранее спасибо

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Заголовок и таскбар | Автор: Павел
Добавлено: 27.08.2007 / 10:46 | ответов: 2 | просмотров: 28

Задавал этот вопрос Экспертам, но ответ так и не получил. Вопрос такой (среда Visual Basic 6): Заголовок на форме и в таскбаре одинаковый, можно ли сделать, чтобы они были разными.

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Алексей
Добавлено:27.08.2007 / 11:40
Можно скрыть заголовок формы, и вместо него нарисовать свой.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: Павел
Добавлено:27.08.2007 / 13:05
Но мне нужно чтобы стиль окон оставался тем же.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Коммандная строка и VB6 | Автор: KreAtoR
Добавлено: 27.08.2007 / 10:43 | ответов: 0 | просмотров: 11

Доброе утрро всем.
Прошу вашей помощи.
Необходимо при помощи Бейсика 6 создать консольную строку, в которой можно давать команды (help, ipconfig) а также открывать программы (notepad.exe) или использовать команду (cd). В последнем случае, необходим вывод строки адреса C:\...
Есть пара вариантов, но никакой не удовлетворяет по всем вариантам возможностей.


Этот пример создает API консоль и может только выводить текст на экран. А этого будет мало

Main.fmr
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
Option Explicit
    
Private Sub Form_Load()
  Dim szUserInput As String
  
  
  AllocConsole
  
  SetConsoleTitle "Console Name Test"
  
  hConsoleIn = GetStdHandle(STD_INPUT_HANDLE)
  hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE)
  hConsoleErr = GetStdHandle(STD_ERROR_HANDLE)
  
  SetConsoleTextAttribute hConsoleOut, FOREGROUND_INTENSITY Or FOREGROUND_RED _
      Or BACKGROUND_GREEN
  
  ConsolePrint "Hello, World" & vbCrLf
  
  SetConsoleTextAttribute hConsoleOut, FOREGROUND_INTENSITY Or FOREGROUND_YELLOW
  ConsolePrint "Enter your name --> "
  
  szUserInput = ConsoleRead()
  
  If Not szUserInput = vbNullString Then
    ConsolePrint "Hello, " & szUserInput & "!" & vbCrLf
  Else
    ConsolePrint "Hello, whoever you are!" & vbCrLf
  End If
  
  
  ConsolePrint "Press Enter to exit"
  Call ConsoleRead
  

  FreeConsole
  
End Sub

Colorized by: Eros.CodeSyntaxColor Engine



ModConsole.bas
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
Option Explicit
    Public Declare Function AllocConsole Lib "kernel32" () As Long 'create console window
    Public Declare Function FreeConsole Lib "kernel32" () As Long 'destroy the console window
    Public Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long 'Handle to the console
    'Console have tree handle
    Public Const STD_INPUT_HANDLE = -10&
    Public Const STD_OUTPUT_HANDLE = -11&
    Public Const STD_ERROR_HANDLE = -12&
    
    Public Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, _
      ByVal lpBuffer As Any, ByVal nNumberofCharsToWrite As Long, _
      lpNumberOfCharsWritten As Long, lpReserved As Any) As Long 'writing to the console
    Public Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" _
      (ByVal lpConsoleTitle As String) As Long 'Title of the console
    Public Declare Function SetConsoleTextAttribute Lib "kernel32" _
      (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long 'Console color
    'these values are passed in the wAttributes argument
    Public Const FOREGROUND_BLUE = &H1
    Public Const FOREGROUND_GREEN = &H2
    Public Const FOREGROUND_RED = &H4
    Public Const FOREGROUND_INTENSITY = &H8
    Public Const BACKGROUND_BLUE = &H10
    Public Const BACKGROUND_GREEN = &H20
    Public Const BACKGROUND_RED = &H40
    Public Const BACKGROUND_INTENSITY = &H80
      
    Public Const FOREGROUND_YELLOW = FOREGROUND_RED Or FOREGROUND_GREEN
    
    Public Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleOutput As Long, _
      dwMode As Long) As Long
    Public Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, _
      ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, _
      lpReserved As Any) As Long
    'For SetConsoleMode (input)
    Public Const ENABLE_LINE_INPUT = &H2
    Public Const ENABLE_ECHO_INPUT = &H4
    Public Const ENABLE_MOUSE_INPUT = &H10
    Public Const ENABLE_PROCESSED_INPUT = &H1
    Public Const ENABLE_WINDOW_INPUT = &H8
    'For SetConsoleMode (output)
    Public Const ENABLE_PROCESSED_OUTPUT = &H1
    Public Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2
    
    Public hConsoleIn As Long 'The consoleЃLs input handle
    Public hConsoleOut As Long 'The consoleЃLs output handle
    Public hConsoleErr As Long 'The consoleЃLs error handle
 
Public Sub ConsolePrint(szOut As String)
  WriteConsole hConsoleOut, szOut, Len(szOut), vbNull, vbNull
End Sub

Public Function ConsoleRead() As String
  Dim sUserInput As String * 256
  Call ReadConsole(hConsoleIn, sUserInput, Len(sUserInput), vbNull, vbNull)
  ConsoleRead = Left$(sUserInput, InStr(sUserInput, Chr$(0)) - 3)
End Function

Colorized by: Eros.CodeSyntaxColor Engine


Есть еще также такой вариант
для него на форме надо выкинуть 3 кнорки и 1 текстбокс

frmConsole
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
Option Explicit
    
    Public Console As New clsConsole
    

Private Sub CommandCloseConsole_Click()
  Console.CloseConsole
End Sub

Private Sub CommandOpenConsole_Click()
  Console.OpenConsole
End Sub

Private Sub CommandWriteText_Click()
  Console.SendText Text.Text
End Sub

Colorized by: Eros.CodeSyntaxColor Engine


basConsole

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
Option Explicit

    
    
    Public Declare Function AllocConsole Lib "kernel32" () As Long 'create console window
    Public Declare Function FreeConsole Lib "kernel32" () As Long 'destroy the console window
    Public Declare Function GetStdHandle Lib "kernel32" (ByVal nStdHandle As Long) As Long 'Handle to the console
    'Console have tree handle
    Public Const STD_INPUT_HANDLE = -10&
    Public Const STD_OUTPUT_HANDLE = -11&
    Public Const STD_ERROR_HANDLE = -12&
    
    Public Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, _
      ByVal lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, _
      lpNumberOfCharsWritten As Long, lpReserved As Any) As Long 'writing to the console
    Public Declare Function SetConsoleTitle Lib "kernel32" Alias "SetConsoleTitleA" _
      (ByVal lpConsoleTitle As String) As Long 'Title of the console
    Public Declare Function SetConsoleTextAttribute Lib "kernel32" _
      (ByVal hConsoleOutput As Long, ByVal wAttributes As Long) As Long 'Console color
    'these values are passed in the wAttributes argument
    Public Const FOREGROUND_BLUE = &H1
    Public Const FOREGROUND_GREEN = &H2
    Public Const FOREGROUND_RED = &H4
    Public Const FOREGROUND_INTENSITY = &H8
    Public Const BACKGROUND_BLUE = &H10
    Public Const BACKGROUND_GREEN = &H20
    Public Const BACKGROUND_RED = &H40
    Public Const BACKGROUND_INTENSITY = &H80
      
    Public Const FOREGROUND_YELLOW = FOREGROUND_RED Or FOREGROUND_GREEN
    
    Public Declare Function SetConsoleMode Lib "kernel32" (ByVal hConsoleOutput As Long, _
      dwMode As Long) As Long
    Public Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, _
      ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, _
      lpReserved As Any) As Long
    'For SetConsoleMode (input)
    Public Const ENABLE_LINE_INPUT = &H2
    Public Const ENABLE_ECHO_INPUT = &H4
    Public Const ENABLE_MOUSE_INPUT = &H10
    Public Const ENABLE_PROCESSED_INPUT = &H1
    Public Const ENABLE_WINDOW_INPUT = &H8
    'For SetConsoleMode (output)
    Public Const ENABLE_PROCESSED_OUTPUT = &H1
    Public Const ENABLE_WRAP_AT_EOL_OUTPUT = &H2
    
    Public hConsoleIn As Long 'The console?Ls input handle
    Public hConsoleOut As Long 'The console?Ls output handle
    Public hConsoleErr As Long 'The console?Ls error handle
 
Public Sub ConsolePrint(szOut As String)
  WriteConsole hConsoleOut, szOut, Len(szOut), vbNull, vbNull
End Sub

Public Function ConsoleRead() As String
  Dim sUserInput As String * 256
  Call ReadConsole(hConsoleIn, sUserInput, Len(sUserInput), vbNull, vbNull)
  ConsoleRead = Left$(sUserInput, InStr(sUserInput, Chr$(0)) - 3)
End Function

Colorized by: Eros.CodeSyntaxColor Engine


clsConsole
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
Option Explicit

Public Function CloseConsole() As Boolean
  If CloseHandle(hConsole) <> 0 Then hConsole = 0
  FreeConsole
End Function

Public Function OpenConsole() As Boolean
  
  'We open the Window
  If AllocConsole() Then
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE)
    If hConsole = 0 Then
      FreeConsole
    Else
      SetConsoleCtrlHandler AddressOf ConsoleHandler, True
      OpenConsole = True
    End If

  End If

End Function

Public Function SendText(sText As String) As Boolean
 
  Dim sOut As String, cWritten As Long

  sOut = sText & vbCrLf
  'Write the text to the console
  SendText = WriteConsole(hConsole, ByVal sOut, Len(sOut), cWritten, ByVal 0&)
End Function

Private Sub Class_Terminate()
  'If a console is open then
  If hConsole <> 0 Then
    'close our handle to it and
    CloseHandle hConsole
    'disconnect it from the process.
    FreeConsole
  End If
End Sub

Colorized by: Eros.CodeSyntaxColor Engine



Есть и еще один выриант. В данном случае можно не просто писать а выполнять команды типа (ipconfig, help > C:\help.txt )
но с другой стороны нельзя выполнить cd C:\windows\notepad.exe

необходимо два текстбокса и одна кнопка

Form1
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
050:
051:
052:
053:
054:
055:
056:
057:
058:
059:
060:
061:
062:
063:
064:
065:
066:
067:
068:
069:
070:
071:
072:
073:
074:
075:
076:
077:
078:
079:
080:
081:
082:
083:
084:
085:
086:
087:
088:
089:
090:
091:
092:
093:
094:
095:
096:
097:
098:
099:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
Option Explicit
Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long
Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type SECURITY_ATTRIBUTES
 nLength As Long
 lpSecurityDescriptor As Long
 bInheritHandle As Long
End Type

Private Type PROCESS_INFORMATION
 hProcess As Long
 hThread As Long
 dwProcessId As Long
 dwThreadId As Long
End Type

Private Type STARTUPINFO
 cb As Long
 lpReserved As Long
 lpDesktop As Long
 lpTitle As Long
 dwX As Long
 dwY As Long
 dwXSize As Long
 dwYSize As Long
 dwXCountChars As Long
 dwYCountChars As Long
 dwFillAttribute As Long
 dwFlags As Long
 wShowWindow As Integer
 cbReserved2 As Integer
 lpReserved2 As Byte
 hStdInput As Long
 hStdOutput As Long
 hStdError As Long
End Type

Private Type OVERLAPPED
  ternal As Long
  ternalHigh As Long
  offset As Long
  OffsetHigh As Long
  hEvent As Long
End Type

Private Const STARTF_USESHOWWINDOW = &H1
Private Const STARTF_USESTDHANDLES = &H100
Private Const SW_HIDE = 0
Private Const EM_SETSEL = &HB1
Private Const EM_REPLACESEL = &HC2

Private Sub Command1_Click()
 Command1.Enabled = False
 Redirect Text1.Text, Text2
 Command1.Enabled = True
End Sub
Private Sub Form_Load()
  Text1.Text = "ipconfig"
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 If Command1.Enabled = False Then Cancel = True
End Sub

Sub Redirect(cmdLine As String, objTarget As Object)
 Dim i%, t$
 Dim pa As SECURITY_ATTRIBUTES
 Dim pra As SECURITY_ATTRIBUTES
 Dim tra As SECURITY_ATTRIBUTES
 Dim pi As PROCESS_INFORMATION
 Dim sui As STARTUPINFO
 Dim hRead As Long
 Dim hWrite As Long
 Dim bRead As Long
 Dim lpBuffer(1024) As Byte
 pa.nLength = Len(pa)
 pa.lpSecurityDescriptor = 0
 pa.bInheritHandle = True
 
 pra.nLength = Len(pra)
 tra.nLength = Len(tra)

 If CreatePipe(hRead, hWrite, pa, 0) <> 0 Then
  sui.cb = Len(sui)
  GetStartupInfo sui
  sui.hStdOutput = hWrite
  sui.hStdError = hWrite
  sui.dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES
  sui.wShowWindow = SW_HIDE
  If CreateProcess(vbNullString, cmdLine, pra, tra, True, 0, Null, vbNullString, sui, pi) <> 0 Then
   SetWindowText objTarget.hwnd, ""
   Do
    Erase lpBuffer()
    If ReadFile(hRead, lpBuffer(0), 1023, bRead, ByVal 0&) Then
     SendMessage objTarget.hwnd, EM_SETSEL, -1, 0
     SendMessage objTarget.hwnd, EM_REPLACESEL, False, lpBuffer(0)
     DoEvents
    Else
     CloseHandle pi.hThread
     CloseHandle pi.hProcess
     Exit Do
    End If
    CloseHandle hWrite
   Loop
   CloseHandle hRead
  End If
 End If
End Sub

Colorized by: Eros.CodeSyntaxColor Engine



Вот собственно и все чем я сейчас располагаю.

Итак что у нас есть. Можно написать текст, выполнить команду Консоли, но нельзя открыть программу или перейти в другую папку.

Помогите плиз как такое можно реализовать?

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Кодировка | Автор: Face
Добавлено: 24.08.2007 / 16:12 | ответов: 10 | просмотров: 114

Подскажите пожалуйста как корректно прочитать русский текст из текстового файла (C#) ?
Обычными средствами File.OpenText он читает файл в кодировке UTF-8, в результате русских символов там не остаётся.
Или нужно прочитанную строку как-то перекодировать потом ?

Ответить на это сообщение | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 1 | Автор: Face
Добавлено:24.08.2007 / 18:00
Я ошибся, не File.OpenText, а метод ReadLine();

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 2 | Автор: EROS
Добавлено:24.08.2007 / 20:11
Кодировка задается при открытии файла. Все объекты и наследники от Stream имеют конструктор, который в качестве параметра примает значение типа System.Text.Encoding. Именно этот конструктор Вам и надо использовать.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 3 | Автор: Алексей
Добавлено:25.08.2007 / 05:04
Я ошибся, не File.OpenText, а метод ReadLine();

проще открыть файл в нужной кодировке, чем перекодировать каждую строку.

http://kbyte.ru/Forum/Show.aspx?id=5187
http://kbyte.ru/Forum/Show.aspx?id=6599
http://kbyte.ru/Expert/Show.aspx?id=67

msdn


[Visual Basic, C#] В следующем примере показан конструктор StreamReader.

Visual Basic


001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
Private Sub getNewStreamReader()
  Dim S As Stream = File.OpenRead("C:\Temp\Test.txt")
  'Get a new StreamReader in ASCII format from a
  'file using a buffer and byte order mark detection
  Dim SrAsciiFromFileFalse512 As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII, False, 512)
  'Get a new StreamReader in ASCII format from a
  'file with byte order mark detection = false
  Dim SrAsciiFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII, False)
  'Get a new StreamReader in ASCII format from a file
  Dim SrAsciiFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt", _
    System.Text.Encoding.ASCII)
  'Get a new StreamReader from a
  'file with byte order mark detection = false    
  Dim SrFromFileFalse As StreamReader = New StreamReader("C:\Temp\Test.txt", False)
  'Get a new StreamReader from a file
  Dim SrFromFile As StreamReader = New StreamReader("C:\Temp\Test.txt")
  'Get a new StreamReader in ASCII format from a
  'FileStream with byte order mark detection = false and a buffer
  Dim SrAsciiFromStreamFalse512 As StreamReader = New StreamReader(S, _
    System.Text.Encoding.ASCII, False, 512)
  'Get a new StreamReader in ASCII format from a
  'FileStream with byte order mark detection = false
  Dim SrAsciiFromStreamFalse = New StreamReader(S, _
    System.Text.Encoding.ASCII, False)
  'Get a new StreamReader in ASCII format from a FileStream
  Dim SrAsciiFromStream As StreamReader = New StreamReader(S, _
    System.Text.Encoding.ASCII)
  'Get a new StreamReader from a
  'FileStream with byte order mark detection = false
  Dim SrFromStreamFalse As StreamReader = New StreamReader(S, False)
  'Get a new StreamReader from a FileStream
  Dim SrFromStream As StreamReader = New StreamReader(S)

End Sub

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


C#


001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
043:
044:
045:
046:
047:
048:
049:
private void getNewStreamReader()
{
  //Get a new StreamReader in ASCII format from a
  //file using a buffer and byte order mark detection
  StreamReader srAsciiFromFileFalse512 =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII, false, 512);
  //Get a new StreamReader in ASCII format from a
  //file with byte order mark detection = false
  StreamReader srAsciiFromFileFalse =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII, false);
  //Get a new StreamReader in ASCII format from a file
  StreamReader srAsciiFromFile =
    new StreamReader("C:\\Temp\\Test.txt",
    System.Text.Encoding.ASCII);
  //Get a new StreamReader from a
  //file with byte order mark detection = false
  StreamReader srFromFileFalse =
    new StreamReader("C:\\Temp\\Test.txt", false);
  //Get a new StreamReader from a file
  StreamReader srFromFile =
    new StreamReader("C:\\Temp\\Test.txt");
  //Get a new StreamReader in ASCII format from a
  //FileStream with byte order mark detection = false and a buffer
  StreamReader srAsciiFromStreamFalse512 = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII, false, 512);
  //Get a new StreamReader in ASCII format from a
  //FileStream with byte order mark detection = false
  StreamReader srAsciiFromStreamFalse = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII, false);
  //Get a new StreamReader in ASCII format from a FileStream
  StreamReader srAsciiFromStream = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    System.Text.Encoding.ASCII);
  //Get a new StreamReader from a
  //FileStream with byte order mark detection = false
  StreamReader srFromStreamFalse = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
    false);
  //Get a new StreamReader from a FileStream
  StreamReader srFromStream = new StreamReader(
    (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"));
}

_______________________
Colorized by: Eros.CodeSyntaxColor Engine


_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 4 | Автор: Face
Добавлено:27.08.2007 / 10:58
Огромное спасибо за советы, но я это всё уже перепробовал :( Я начал дальше смотреть, файл в виндовой кодировке ANSI, его можно как-то прочитать без потерь кирилицы ?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 5 | Автор: Алексей
Добавлено:27.08.2007 / 11:40
Все должно работать. Покажите код, которым вы читаете файл.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 6 | Автор: Face
Добавлено:27.08.2007 / 12:06
так: StreamReader custs = File.OpenText(@"\storage card\custs.1c");
или так: using (StreamReader custs = new StreamReader(@"\storage card\custs.1c", false))

Перебровал задавать параметры кодировки, которые указаны в примере чуть выше, ничего.... Если читать с параметром SystemText.Encoding.ASCII, то тогда у меня вместо непонятных символов одни знаки вопроса.

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 7 | Автор: Алексей
Добавлено:27.08.2007 / 12:15
кусок кода из выше указанного примера:
StreamReader srAsciiFromStream = new StreamReader((System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"), System.Text.Encoding.ASCII);

для Windows-1251 кодировки нужно указывать ее:
StreamReader srAsciiFromStream = new StreamReader((System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"), System.Text.Encoding.GetEncoding(1251));

и так со всеми нужными кодировками. В данных мной ранее ссылках об этом было написано, и показано на примерах.

_________________
Это сообщение добавлено через Kbyte.Ru Forum Mail Conference (FMC)

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 8 | Автор: 5acred Phoenix
Добавлено:27.08.2007 / 12:20
System.Text.Encoding.GetEncoding(1251)

Ну или, думаю, System.Text.Encoding.Default

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 9 | Автор: 5acred Phoenix
Добавлено:27.08.2007 / 12:27
Кстати у меня есть вопрос, несколько по теме...

Есть двоичный файл, в котором числа записаны в big-endian формате. Можно ли задать кодировку по типу System.Text.Encoding.BigEndianUnicode, только не uft-16, а, например, windows-1251?

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Ответ # 10 | Автор: Face
Добавлено:27.08.2007 / 12:36
кусок кода из выше указанного примера:
StreamReader srAsciiFromStream = new StreamReader((System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"), System.Text.Encoding.ASCII);

для Windows-1251 кодировки нужно указывать ее:
StreamReader srAsciiFromStream = new StreamReader((System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"), System.Text.Encoding.GetEncoding(1251));

и так со всеми нужными кодировками. В данных мной ранее ссылках об этом было написано, и показано на примерах.

Огромное спасибо, сразу проглядел!

Добавить ответ | Посмотреть эту тему на сайте | Форум Kbyte.Ru


Наверх

 

Последние статьи

Взаимодействие с другими сайтами через HTTP (HttpWebRequest и HttpWebResponse)
Автор: Немиро Алексей | добавлено: 27.07.2007 / 14:01 | просмотров: 545

В данной статье речь пойдет о том, как можно программно заполнить и отправить Web-форму, а также получить результат с использованием довольно простых классов - HttpWebRequest и HttpWebResponse.

Работа с SQL – Запросы
Автор: Хабибулин А. (aka Bille Gates) | добавлено: 22.07.2007 / 04:43 | просмотров: 919

В данной статье рассмотрены часто используемые SQL-запросы и приведены примеры их использования.

Использование XML.Serialization
Автор: Немиро Алексей | добавлено: 19.07.2007 / 15:38 | просмотров: 234

В данном обзоре речь пойдет об использование XML.Serialization в .NET и ее применении на примере сохранения и считывания настроек программы с использованием синтаксиса языка Visual Basic .NET.

Выбор языка программирования для научных работ (2-я редакция)
Автор: Юдин С. Ю. | добавлено: 15.03.2007 / 02:49 | просмотров: 1981

Идея написания этой статьи возникла после того, как на одном из сайтов по физике http://physics.nad.ru/aniboard/messages/291.html я обнаружил интересный алгоритм моделирования движения тела в поле постоянной напряженности по различным направляющим. Вернее, меня заинтересовал не весь алгоритм, т.к. основа их всех одна (принцип Даламбера, если не считать квазиалгоритма с применением уравнений Лагранжа 2-го рода) и различаются они только способом определения реакций в месте соприкосновения тел. ...

Работаем с MIME
Автор: Немиро Алексей | добавлено: 29.11.2006 / 14:46 | просмотров: 1916

Не так давно мне пришлось немного поработать MIME (Multipurpose Internet Mail Extension) - это стандарт почтовых сообщений, в РуНете (Russian Internet) я не нашел нормального описания спецификации MIME, и посему решил написать небольшую статейку на эту тему. В данной статье вы узнаете об основных особенностях и стандартах MIME, а также научитесь «читать» MIME с использованием синтаксиса языка Visual Basic .NET 2005.

 

Статьи на Kbyte.Ru

Наверх

 

Интересные коды и решения

Как преобразовать цвет в Web-стандарт?
Дата добавления: 24.03.2007 / 11:37 | просмотров: 198 | платформа: VB .NET

Как получить параметры командной строки?
Дата добавления: 04.08.2006 / 09:20 | просмотров: 773 | платформа: VB

Поиск и замена символов/слов/строк
Дата добавления: 31.07.2006 / 12:28 | просмотров: 1487 | платформа: VB

Перекодировка текста с латинской раскладки в русскую
Дата добавления: 16.08.2006 / 19:12 | просмотров: 1288 | платформа: VB

Как получить текущее системное время?
Дата добавления: 16.08.2006 / 20:18 | просмотров: 1023 | платформа: VB

Как получить значение определенного параметра из строки запроса?
Дата добавления: 31.07.2006 / 15:42 | просмотров: 521 | платформа: ASP .NET (VB)

Получение данных из куков (Cookies)
Дата добавления: 01.08.2006 / 12:03 | просмотров: 637 | платформа: ASP

Форма поверх всех окон
Дата добавления: 01.08.2006 / 17:23 | просмотров: 766 | платформа: VB .NET

Как сделать, чтобы при «редиректе» сервер выдал 301 код статуса, а не 302?
Дата добавления: 31.07.2006 / 13:50 | просмотров: 699 | платформа: ASP .NET (VB)

Как запустить процесс и дождаться его завершения?
Дата добавления: 24.03.2007 / 12:12 | просмотров: 312 | платформа: VB .NET

 

Универсальные коды на Kbyte.Ru

Наверх

 

Юмор на Kbyte.Ru

Бороться с пьянством, ограничивая доступ к водке - это то же самое, что бороться с поносом, ограничивая доступ к туалету.

 

Рейтинг: 100
Всего голосов: 148
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Сразу хочу пояснить - то, что я кратко хочу рассказать - не боян, или как там еще называют плагиат или какие-нибудь хреновые выдумки, а рассказано мне непосредственым участником событий.
Ну так вот. Кто не знает - в Москве появилась новая площадь - имени Шарля де Голля. А почему она так названа? Правильно. Потому что напротив гостиницы "Космос" поставили памятник этому самому Шарлю де Голлю, и открывали этот памятник не кто-нибудь, а Наш и Их президенты.
А перед самым открытием, примерно за неделю, приехал посмотреть на это чудо сам Лужков. А сопровождал его автор чуда. Правильно. Церетели. Посмотрел Лужков на этот памятник и указал Церетели на то, что козырек кепки длинноват, понимаешь. Ну не может, видишь ли, козырек быть длиннее самой кепки! Не вопрос!!! Далее - действие от очевидца. Примерно в час ночи подъезжает подъемник, еще какие-то машины, накинули на голову памятнику огромный куполообразный чехол - и тихо, по-видимому, газосваркой, обрезали козырек кепки! только потом, наверное, отшлифовали - пошумели чем-то минут 40.
А наутро никто и не заметил перемены в памятнике. Наверно, потому, что смотреть на творения Церетели невозможно, так никто и не смотрит.

 

Рейтинг: 97
Всего голосов: 140
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Житель Крайнего Севера в компьютерном магазине:
- У вас операционные системы есть?
- Есть.
- Многозадачные есть?
- Есть.
- Дайте, пожалуйста, трехзадачную!

 

Рейтинг: 109
Всего голосов: 157
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Собирается супружеская пара в Большой Театр на балет. Жена надевает платье и подходит к мужу:
- Дорогой, застегни молнию пожалуйста, - и поворачивается к нему спиной. Муж застегивает..., потом расстегивает снова.
- Дорогой, в чем дело? У нас нет времени, мы можем опоздать на спектакль.
- Большой театр стоял и стоять будет, а у меня это дело случая.

 

Рейтинг: 77
Всего голосов: 86
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Винды не глючат? Вероятно, вирус!

 

Рейтинг: 94
Всего голосов: 143
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Что общего между морской свинкой и женщиной-программистом?
То, что морская свинка - она и не свинка, и не морская.

 

Рейтинг: 69
Всего голосов: 120
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Ехали как-то на джипе четыре братка, вдруг в них врезается сзади старая шестерка. Братки злые выходят из машины и видят из шестерки выходит старый дед. Братки ему:
Ну все дед ты попал!!!
Дед: Не злитесь ребятки, у меня сын на птицефабрике работает, я ему позвоню, он все уладит.
Братки думают ладно раз на птицефабрике работает, значит деньги есть.
Дед позвонил, приезжают через десять минут СОБРовцы, всех братков на землю повалили.
Подходид СОБРовец к деду и говорит:
Батя, сколько раз повторять можно, не на птицефабрике, а в отряде ОРЕЛ!!!

 

Рейтинг: 61
Всего голосов: 92
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Недавно начал работу в фирме коммерческой недвижимости. Сделал им сеть пару недель назад, а до этого, несколько дней бухгалтера данными между компьютерами при помощи флэшки обменивались (фирма экономит на всём, дисководов нет). К одному из компьютеров по USB были подключены принтер и мышь. USB портов в том компьютере всего два, оба и заняли. Подключили, пока меня не было, флэшку, а для этого отключили принтер. Перекинули нужные данные и снова подключили принтер.
Прошло время, звонят мне по телефону и жалуются, мол, принтер не работает, работа стоит, приезжай скорее! Приехал, как только смог, посмотрел настройки принтера - все в норме. Стал подключение принтера к компьютеру смотреть. Каково же было моё изумление, когда я увидел USB коннектор аккуратненько насаженный на штырьки COM порта! До этого, мне даже не представлялось, что такое возможно! Судя по всему, не зря у женщины, осуществившей такое подключение, на рабочем столе изображение девушки, едущей в автомобиле из которого она забыла вынуть пистолет бензозаправки...

 

Рейтинг: 617
Всего голосов: 907
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Просыпается программер с бодуна. Поворачивает голову и видит рядом с собой девушку.
"Обнаружено неизвестное устройство" - подумал он.

 

Рейтинг: 362
Всего голосов: 484
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Она всю жизнь была верна только "Джонсону и Джонсону" - от первого памперса до последнего тампакса.

 

Рейтинг: 48
Всего голосов: 59
Оцените этот анекдот через E-Mail:
Выберите оценку: 5 | 4 | 3 | 2 | 1

 

Весь юмор на Kbyte.Ru

Наверх


Выпуск подготовил: R-KDR-19826

Редактор: Немиро Алексей

Copyright (c) Nemiro AS, 2005-2007


В избранное