Вы можете поместить байтовый массив в String и выполнить совпадение с помощью IndexOf. Или вы можете, по крайней мере, повторно использовать существующие алгоритмы при сопоставлении строк.
[STAThread]
static void Main(string[] args)
{
byte[] pattern = new byte[] {12,3,5,76,8,0,6,125};
byte[] toBeSearched = new byte[] {23,36,43,76,125,56,34,234,12,3,5,76,8,0,6,125,234,56,211,122,22,4,7,89,76,64,12,3,5,76,8,0,6,125};
string needle, haystack;
unsafe
{
fixed(byte * p = pattern) {
needle = new string((SByte *) p, 0, pattern.Length);
} // fixed
fixed (byte * p2 = toBeSearched)
{
haystack = new string((SByte *) p2, 0, toBeSearched.Length);
} // fixed
int i = haystack.IndexOf(needle, 0);
System.Console.Out.WriteLine(i);
}
}
Вы можете установить протокол, например myapp: // запуск / действие или подобное, для автоматического запуска вашего приложения, настроив в HKEY_CLASSES_ROOT раздел реестра с указанием имени вашего протокола и действия, которое оно должно выполнить.
Существует статья MSDN , в которой показан следующий пример реестра для протокола предупреждения:
HKEY_CLASSES_ROOT
alert
(Default) = "URL:Alert Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "alert.exe,1"
shell
open
command
(Default) = "C:\Program Files\Alert\alert.exe" "%1"
, который затем вызывается путем запроса URL-адреса с alert:YOURPARAMS
, который затем вызывается alert.exe YOURPARAMS
.