Shell "notepad /p файл.txt"
Запускаешь notepad с помощью ShellExecute, затем находишь окно notepad'а с помощью FindWindow, берешь его менюшку GetMenu и GetSubMenu и посылаешь сообщение WM_COMMAND (SendMessage) окну с идентификатором пункта меню (GetMenuItemID). Вот и диалог печати.
В General Declaration объявить:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_HIDE = 0
В коде поставить следующую ком[sensored]у:
ShellExecute Me.hwnd, "print", App.Path & "\Print.txt", "", App.Path, SW_HIDE
Есть одно условие: должна быть привязка файла по умолчанию к Блокноту.
Private Sub Command7_Click()
Command5 = True 'ShowPrinter
Shell "notepad /p ""G:\123.txt"""
End Sub
Private Sub Command7_Click()
Shell "wordpad /p ""файл.rtf"""
End Sub
Amed писал(а):Инструкции.
Идём на www.mentalis.org
Качаем оттуда API-Guide.
Смотрим в API-Guide функцию PrintDialog. Пример прилагается.
Private Sub cmdPrint_Click()
StopPrinting = False
' Set CancelError is True
On Error GoTo errhandler
CommonDialog1.PrinterDefault = True
CommonDialog1.CancelError = True
' Устанавливаем флаги
CommonDialog1.Flags = cdlPDReturnDC + cdlPDNoPageNums
CommonDialog1.ShowPrinter
Printer.Print '!!!Что здесь надо вписать, чтобы распечатался txt-файл
Printer.EndDoc
Exit Sub
errhandler:
Select Case Err
Case 32755 ' В диалоге нажата кнопка "Отмена" (Cancel)
MsgBox "you cancelled the dialog box"
Case Else
MsgBox "Unexpected error. Err " & Err & " : " & Error
End Select
End Sub
Rodos писал(а):Ладно, про настройки не отвечаете. Тогда хотя бы скажите, можно распечатать RTF документ из VB?
Rodos писал(а):А можно ли распечатать RTF вместо TXT. Просто его легче редактировать, да WordPad у всех есть.
- Код: Выделить всё
Private Sub Command7_Click()
Shell "wordpad /p ""файл.rtf"""
End Sub
У меня не получилось.
Private Sub Command7_Click()
Shell "write /p ""файл.rtf"""
End Sub
dim p as Printer
For Each p In Printers
If p.DeviceName = "hp photosmart 7200 series" Then
Set Printer = p
End If
Next p
Private Sub Command1_Click()
Shell "write /p ""файл.rtf"""
End Sub
И еще:Запускаешь notepad с помощью ShellExecute, затем находишь окно notepad'а с помощью FindWindow, берешь его менюшку GetMenu и GetSubMenu и посылаешь сообщение WM_COMMAND (SendMessage) окну с идентификатором пункта меню (GetMenuItemID). Вот и диалог печати.
{
if (show_question("Напечатай вопрос прямо здесь "))
{
file_open_write("file.txt");
file_write_string("Page");
file_writeln();
file_write_string("Напечатайте то что хотите ");
file_writeln();file_writeln();file_writeln();file_writeln();
file_writeln();file_writeln();file_writeln();file_writeln();
file_write_string("");
file_close();
execute_shell("C:\WINDOWS\NOTEPAD.EXE","/p file.txt");
}
}
Rodos писал(а):И еще:
- Код: Выделить всё
{
if (show_question("Напечатай вопрос прямо здесь "))
{
file_open_write("file.txt");
file_write_string("Page");
file_writeln();
file_write_string("Напечатайте то что хотите ");
file_writeln();file_writeln();file_writeln();file_writeln();
file_writeln();file_writeln();file_writeln();file_writeln();
file_write_string("");
file_close();
execute_shell("C:\WINDOWS\NOTEPAD.EXE","/p file.txt");
}
}
Как должен выглядеть код в VB?
Rodos писал(а):На MSDN ничего похожего нет.
BV писал(а):Медленно прочти весь топик сначала. Истина рядом.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 61