Современные решения

для защиты Windows приложений

и восстановления исходного кода

Visual Basic 6.0 - Правильное применение GetLocaleInfo


Правильное применение GetLocaleInfo

Hello All!

Возникли вопpосы по пpавильному пpименению GetLocaleInfo.

Исходные данные:
Win2kPro (rus) пpофиль админа

В модуле

Declare Function GetLocaleInfo и т.д.
Declare Function SetLocaleInfo и т.д.
Public Const LOCALE_IDATE = &H21 ' short date format ordering

В фоpме

Private Sub Command1_Click()
Dim ret As Long
Dim lBuffSize As String
Dim sBuffer As String

lBuffSize = 256
sBuffer = String$(lBuffSize, vbNullChar)
ret = GetLocaleInfo(LOCALE_IDATE, 31, sBuffer, lBuffSize)
If ret > 0 Then

Text1.Text = Left(sBuffer, ret - 1)
End If
End Sub

Private Sub Command2_Click()
Dim ret As Long
ret = SetLocaleInfo(LOCALE_IDATE, 31, Text1.Text)
MsgBox ret
End Sub

Суть вопpоса:
По Set... меняет коppектно (пpовеpял по pегиональным установкам)
По Get... всегда!!! выдает dd/mm/yyyy

Может я как то не так вызываю Get...? Втоpой паpаметp - 31 нашел методом
пеpебоpа.

Bye! /SysOp/

* Origin: Home PC (stas [@] mednet.kirov.ru) (2:5056/40.2)

Re: Правильное применение GetLocaleInfo

Мы где-то виделись, Stanislav?

06 Oct 03 22:24:54 в RU.VISUAL.BASIC Stanislav Krichmar -> All:


SK> Суть вопpоса:

SK> По Set... меняет коppектно (пpовеpял по pегиональным установкам)

SK> По Get... всегда!!! выдает dd/mm/yyyy


SK> Может я как то не так вызываю Get...? Втоpой паpаметp - 31 нашел методом

SK> пеpебоpа.


MSDN рулит.

============================== Смотри ниже ===============================
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" _
(ByVal Locale As Long, ByVal LCType As Long, _
ByVal lpLCData As String, ByVal cchData As Long) As Long

Const LOCALE_SLONGDATE = &H20
Const LOCALE_USER_DEFAULT = &H400

Sub Main()
Dim s$
s = String$(80, 0)
s = Left$(s, GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, s, Len(s)))
MsgBox s
End Sub
============================== Смотри выше ===============================

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)

Firebird

Hello Alexander.


AB> Кто-нибудь pаботал с сабжем из VB.


Я pаботаю. VB6, чеpез ODBC. Вполне pаботоспособно.

Eduard

* Origin: Каждому ДЕЦЕЛУ - по 'пейджеpу'. (2:5012/23.121)

Печать формы многостранично?

From: "Oleg Medinsky" <designer [@] dreams-come-true.kiev.ua>


Привет Всем!
Вопрос:
Вывожу на принтер нескольео раз форму, допустим 3 раза, но эти 3 раза идут
как 3 задания (документа) в принтере!

Form1.Text1.Text = txt1
Form1.Text2.Text = txt2
Form1.Text3.Text = txt3

Form1.PrintForm
Printer.EndDoc

Как обьединить в одно задание как многостраничный документ?
Hужно именно с формой!

Олег
grf [@] ukr.net


* Origin: user from ELVISTI (2:5020/400)

Re: Печать формы многостранично?

From: "Vas Lustin" <vasilij [@] access.vrn.ru>



Form1.Text1.Text = txt1
Form1.Text2.Text = txt2
Form1.Text3.Text = txt3
Form1.PrintForm

Printer.NewPage
Form1.Text1.Text = txt4
Form1.Text2.Text = txt5
Form1.Text3.Text = txt6
Form1.PrintForm

Printer.NewPage
Form1.Text1.Text = txt7
Form1.Text2.Text = txt8
Form1.Text3.Text = txt9
Form1.PrintForm

Printer.EndDoc


"Oleg Medinsky" <designer [@] dreams-come-true.kiev.ua> wrote in message

news:bltmo4$2lhs$1 [@] app0.visti.net...
> Привет Всем!

> Вопрос:

> Вывожу на принтер нескольео раз форму, допустим 3 раза, но эти 3 раза идут

> как 3 задания (документа) в принтере!

>

> Form1.Text1.Text = txt1

> Form1.Text2.Text = txt2

> Form1.Text3.Text = txt3

>

> Form1.PrintForm

> Printer.EndDoc

>

> Как обьединить в одно задание как многостраничный документ?

> Hужно именно с формой!

>

> Олег

> grf [@] ukr.net

>

>


* Origin: Информсвязь-Черноземье (2:5020/400)

Re: IsHackerPresent

From: Alexander Asyabrik <belmis [@] mail.belpak.by>


Привет, Sergey.

Вы, было дело, писали 7 октября 2003 г., 3:00:14:


SB> AA> Попытка спрятать триальные метки внутри системных ключей реестра

SB> AA> (CLSID и подобное) приводит к еще более быстрому обнаружению их, так

SB> AA> как обращение к ним проги является очень подозрительным.


SB> А кого, например, может насторожить обращение к

SB> {00020420-0000-0000-C000-000000000046} - PSDispatch, oleaut32.dll.


Ответ очевиден - меня:)). Как только в том ключике появится что-либо
подобное вот такой лабуде: 6f3ha20e.

SB> К нему обращаются все, кому не лень.


Sergey, тебе надо самому попробовать программу Regmon (врага надо
знать в лицо). Там есть такая фича, как фильтр по процессу. И, впрямь,
чего это хакер будет следить за другими приложениями, если его
интересует сейчас твоя прога?

BTW VB, проработав больше часа с моим суперпупер проектом, позапускав
его и скомпилировав, не произвел HИ ОДHОГО обращения к этому параметру
реестра. И скомпилированная программа тож. Видимо, придется выбирать
для VB прог другой ключик для хованки:), ну хотя бы этот
HKCR\TypeLib\{00020430-0000-0000-C000-000000000046} (для STDOLE2.TLB)


SB> Да, против лома нет приема. Hа 99% это ловится либо во время

SB> инсталляции, либо во время первого запуска, либо, если даже этот

SB> момент пропущен, путем сравнения снимков двух последовательных

SB> запусков.


Первый вариант ну ооочень редкий, второй - это да, а третий абсолютно
непригоден для ограничения по времени, а только по числу запусков, что
не популярно.

SB> Тут уместно вспомнить старую притчу про автомеханика, который взял

SB> $1 за прокладку и $99 - за то, что знал, где поменять.


Это и моя любимая поговорка была, когда телеки в молодости ходил
ремонтировать и вся работа заключалась в замене только одного кондера.
--
Alexander
* Origin: Talk.Mail.Ru (2:5020/400)

RichTextBox

Приветствую тебя, _Sergey_ !


Sergey Broudkov и Vitaliy Pryahin сидели дома,пили пиво и болтали на тему _Re: RichTextBox_.

VP>> RichTextBox1.Find("sr")

VP>> но вот как сделать чтоб он продолжил далее в тексте искать? а то он

VP>> найдет одно совпадение и все.


SB> Function Find(bstrString As String, [vStart], [vEnd], [vOptions]) As Long

SB> Member of RichTextLib.RichTextBox

SB> Searches the text in a RichTextBox control for a given string.

спасибо, но вот еще бы как ею воспользоваться :)

Hе скучай,_Sergey_. С уважением,Виталий.

* Origin: (2:5096/19)

Re: VB6.Printing

From: "Igor Evgrafov" <fornews [@] systems21.ru>


Hello, Victor.Frolov [@] p116.f55.n5004.z2.fidonet.org! You wrote to All on Mon, 06 Oct 2003 11:41:25 +0400:

VF> А как _правильно_ печатать на матричном принтере _текстовую_

VF> информацию? Открывать LPT1 для записи считаю не очень хорошим

VF> решением...


вот пример для C# - думаю ничего сложного переточить его для VB

=========Beginning of the citation==============
DA>В моем приложении есть необходимость печати большого объема информации на матричный принтер.В Delphi были несколько компонентов,которые позволяли реализовать это с прекрасным интерфейсом и отличной скоростью печати (например ZReport).

DA>Есть ли какая та возможность добиться это в С#?

Мне в свое время тоже никто не ответил на подобный вопрос. Вот примерное решение, с использованием Spooler'a:

[DllImport("winspool.drv")]
public static extern int ClosePrinter(int hPrinter);

[DllImport("winspool.drv")]
public static extern int EndDocPrinter(int hPrinter);

[DllImport("winspool.drv")]
public static extern int EndPagePrinter(int hPrinter);

[DllImport("winspool.drv", CharSet=CharSet.Ansi, BestFitMapping = false, ThrowOnUnmappableChar = true)]
public static extern int OpenPrinter(string pPrinterName, ref int phPrinter, int pDefault);

[DllImport("winspool.drv", CharSet=CharSet.Ansi, BestFitMapping = false, ThrowOnUnmappableChar = true)]
public static extern int StartDocPrinter(int hPrinter, int Level, ref DOCINFO pDocInfo);

[DllImport("winspool.drv")]
public static extern int StartPagePrinter(int hPrinter);

[DllImport("winspool.drv")]
public static extern int WritePrinter(
int hPrinter,
[MarshalAs(UnmanagedType.LPStr)] string printStr,
int cdBuf,
ref int pcWritten
);

public struct DOCINFO
{
public string pDocName, pOutputFile, pDatatype;
}
int lReturn=0, lDoc=0, lhPrinter=0;
DOCINFO MyDocInfo;

lReturn = OpenPrinter("HP DeskJet 610C", ref lhPrinter, 0);
if (lReturn == 0)
{
MessageBox.Show("The printer wasn't recognized!");
return;
}
MyDocInfo.pDocName = "Vlad test";
MyDocInfo.pOutputFile = null;
MyDocInfo.pDatatype = null;
lDoc = StartDocPrinter(lhPrinter, 1, ref MyDocInfo);
StartPagePrinter(lhPrinter);

//do print
int lpcWritten=0;
string sWrittenData = "This page is printed on 5.00$ banknote! )\xD\xA";
lReturn = WritePrinter(lhPrinter, sWrittenData, sWrittenData.Length, ref lpcWritten);
//end page
lReturn = EndPagePrinter(lhPrinter);
lReturn = EndDocPrinter(lhPrinter);
lReturn = ClosePrinter(lhPrinter);

MessageBox.Show("Printed "+lpcWritten.ToString()+" symbols");



Печатает все это хозяйство не в графике, а как положено
=========The end of the citation================

With best regards, Igor Evgrafov. E-mail: ievgrafo<AT>systems21{DOT}ru

* Origin: Cronyx Plus ISP (2:5020/400)

Re[3]: IsHackerPresent

From: "Dmitry Viazowkin" <vde [@] ufanet.ru>


Hi!

> По-моему это как-то неточно сформулировано. Вряд ли можно говорить об

> объектах (в понимании ООП а не API) в _ядре_ Windows. Попробуй


Еще как! Даже в Вин95 есть готовые классы для оболочки, а В2к так вообще вся на
DCOM.

> свеженькой винды. Она предстанет перед твоим взором довольно

> маленькой. Разрастается она уже потом, когда начинаешь пихать в нее


В вин 3,1 - да. Hо мы не о нем.

> как обращение к ним проги является очень подозрительным. И опять же

> вынужден напомнить о необходимости как-то все-таки этот ключ создать,

> что будет легко обнаружить утилитами сравнения снимков реестра.


Главное - не попасться ;). Так что к ключам будут обращаться не те и не тогда.
Как ты думаешь, хакера сильно заинтересуют ключи, создаваемые виндовым
Проводником при перезагрузке?

> И главное, чем навороченнее будет в конечном счете защита, тем более

> вероятен взлом ее изнутри, обычно с помощью замены одного-двух

> байтиков (большинство красивеньких, с музыкой или там с анимацией,

> креков всего-то и патчат именно пару байт в исполнимом файле).


Дык не надо все делать в одном месте одной функцией!!! А то иногда все сводится
к единственной проверке типа Если СложнаяПроверка()=1 тогда ВсеОК() - которая
выносится одним байтом... Сам иногда ломал, знаю.


--
With best regards
Dmitry Viazowkin


* Origin: Me? Organized??? (2:5020/400)

ADO (EOF BOF)

From: "Kobzarenko" <kobzarenko [@] ukrtel.net>


Пишу вебстраничку для доступа к даным
При формировании пустого ркекордсета на
Movefirst грязно ругается:
Тип ошибки:
ADODB.Recordset (0x800A0BCD)
BOF или EOF имеет значение True, либо текущая запись удалена. Для
выполняемой операции требуется текущая запись.
Как это обойти?
Ведь свойство recordCount имеет смысл тоже после навигации movelast?
Александр


* Origin: Demos online service (2:5020/400)